From 747b8f1c06f9325437e5508becba8b309289dd8b Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 16 Jul 2026 12:11:22 +0800 Subject: [PATCH 1/4] docs: add storage release QC completed filter design and plan Document qcWorkOrderCompleted list filter semantics and implementation steps. Co-authored-by: Cursor --- ...rage-release-review-qc-completed-filter.md | 437 ++++++++++++++++++ ...lease-review-qc-completed-filter-design.md | 159 +++++++ 2 files changed, 596 insertions(+) create mode 100644 docs/superpowers/plans/2026-07-16-storage-release-review-qc-completed-filter.md create mode 100644 docs/superpowers/specs/2026-07-16-storage-release-review-qc-completed-filter-design.md diff --git a/docs/superpowers/plans/2026-07-16-storage-release-review-qc-completed-filter.md b/docs/superpowers/plans/2026-07-16-storage-release-review-qc-completed-filter.md new file mode 100644 index 00000000..88132d34 --- /dev/null +++ b/docs/superpowers/plans/2026-07-16-storage-release-review-qc-completed-filter.md @@ -0,0 +1,437 @@ +# 入库放行审核 · 待审核质检工单完成度过滤 Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 待审核 Tab 默认只展示「样本下质检工单已完成」的入库放行记录,并提供可改回「否/全部」的筛选项。 + +**Architecture:** 列表 API 增加可选布尔参数 `qcWorkOrderCompleted`;CRUD 用 `EXISTS`/`NOT EXISTS` 按 `sample_code` 关联 `biz_qc_work_order` 过滤(完成 = 至少一条有效工单且无 `dpz`/`ypz`)。前端仅在待审核展示该筛选项,默认/重置/从已审核切回均为「是」。 + +**Tech Stack:** FastAPI + SQLAlchemy(backend)、Vue 3 + Element Plus(web-admin) + +**Spec:** `docs/superpowers/specs/2026-07-16-storage-release-review-qc-completed-filter-design.md` + +--- + +## File Map + +| 文件 | 职责 | +|------|------| +| `backend/app/crud/storage_release_review.py` | `normalize_qc_work_order_completed` + `list_reviews` EXISTS 过滤 | +| `backend/app/api/storage_release_review.py` | 列表 Query `qcWorkOrderCompleted` | +| `backend/tests/test_storage_release_review_qc_completed.py` | **新建** 参数规范化单测 | +| `web-admin/src/api/storage-release-review.ts` | 列表 params 增加 `qcWorkOrderCompleted?: boolean` | +| `web-admin/src/views/quality-inspection/storage-release-review/index.vue` | 待审核筛选项、默认/重置/切 Tab、请求传参 | + +--- + +### Task 1: Backend — 规范化函数 + 列表 EXISTS 过滤 + API + +**Files:** +- Create: `backend/tests/test_storage_release_review_qc_completed.py` +- Modify: `backend/app/crud/storage_release_review.py` +- Modify: `backend/app/api/storage_release_review.py` + +- [ ] **Step 1: 写失败单测(规范化函数)** + +创建 `backend/tests/test_storage_release_review_qc_completed.py`: + +```python +from app.crud.storage_release_review import normalize_qc_work_order_completed + + +def test_normalize_qc_work_order_completed_accepts_bool_and_strings(): + assert normalize_qc_work_order_completed(True) is True + assert normalize_qc_work_order_completed(False) is False + assert normalize_qc_work_order_completed("true") is True + assert normalize_qc_work_order_completed("TRUE") is True + assert normalize_qc_work_order_completed("1") is True + assert normalize_qc_work_order_completed("yes") is True + assert normalize_qc_work_order_completed("false") is False + assert normalize_qc_work_order_completed("0") is False + assert normalize_qc_work_order_completed("no") is False + assert normalize_qc_work_order_completed(" FALSE ") is False + + +def test_normalize_qc_work_order_completed_rejects_unknown(): + assert normalize_qc_work_order_completed(None) is None + assert normalize_qc_work_order_completed("") is None + assert normalize_qc_work_order_completed("all") is None + assert normalize_qc_work_order_completed("maybe") is None +``` + +- [ ] **Step 2: 跑单测确认失败** + +```bash +cd backend && source venv/bin/activate && pytest tests/test_storage_release_review_qc_completed.py -v +``` + +Expected: FAIL(`normalize_qc_work_order_completed` 未定义或导入失败) + +- [ ] **Step 3: 实现 normalize、EXISTS 辅助过滤,并接入 `list_reviews`** + +在 `backend/app/crud/storage_release_review.py`: + +1) 更新 import: + +```python +from sqlalchemy import and_, exists, func, or_ +``` + +(`BizQcWorkOrder` 已在 models 导入中,无需新增。) + +2) 在 `normalize_review_phase` 附近增加: + +```python +def normalize_qc_work_order_completed(raw) -> Optional[bool]: + """Return True/False when recognizable; None means no filter.""" + if raw is None: + return None + if isinstance(raw, bool): + return raw + s = str(raw).strip().lower() + if s in ("true", "1", "yes"): + return True + if s in ("false", "0", "no"): + return False + return None + + +def _qc_work_order_exists_for_review_sample( + tenant_no: str, *, unfinished_only: bool = False +): + """Correlate biz_qc_work_order to BizStorageReleaseReview.sample_code.""" + conds = [ + BizQcWorkOrder.tenant_no == tenant_no, + BizQcWorkOrder.del_flag == 0, + BizQcWorkOrder.sample_code.isnot(None), + BizQcWorkOrder.sample_code != "", + BizQcWorkOrder.sample_code == BizStorageReleaseReview.sample_code, + BizStorageReleaseReview.sample_code.isnot(None), + BizStorageReleaseReview.sample_code != "", + ] + if unfinished_only: + conds.append(BizQcWorkOrder.work_order_status.in_(("dpz", "ypz"))) + return ( + exists() + .where(and_(*conds)) + .correlate(BizStorageReleaseReview) + ) +``` + +3) 修改 `list_reviews` 签名,在 `review_phase` 与 `user_info` 之间增加: + +```python + qc_work_order_completed=None, +``` + +完整签名片段: + +```python +def list_reviews( + db: Session, + *, + tenant_no: str, + page: int = 1, + page_size: int = 10, + reception_source: Optional[str] = None, + review_conclusion: Optional[str] = None, + storage_status: Optional[str] = None, + keyword: Optional[str] = None, + review_phase: Optional[str] = None, + qc_work_order_completed=None, + user_info=None, +) -> Dict[str, Any]: +``` + +4) 在 keyword 过滤之后、`user_info` / data_scope 之前插入: + +```python + qc_done = normalize_qc_work_order_completed(qc_work_order_completed) + if qc_done is True: + q0 = q0.filter( + _qc_work_order_exists_for_review_sample(tenant_no, unfinished_only=False), + ~_qc_work_order_exists_for_review_sample(tenant_no, unfinished_only=True), + ) + elif qc_done is False: + q0 = q0.filter( + or_( + ~_qc_work_order_exists_for_review_sample( + tenant_no, unfinished_only=False + ), + _qc_work_order_exists_for_review_sample( + tenant_no, unfinished_only=True + ), + ) + ) +``` + +语义对照(spec §3): + +- `True`:至少一条有效工单,且无 `dpz`/`ypz`(`yzf`/`ywc` 均可) +- `False`:无工单,或存在 `dpz`/`ypz` +- `None`:不过滤 + +- [ ] **Step 4: API 增加 Query 并传入 CRUD** + +修改 `backend/app/api/storage_release_review.py` 的 `list_storage_release_reviews`: + +```python +@router.get("/storage-release-reviews") +async def list_storage_release_reviews( + page: int = Query(1, ge=1), + pageSize: int = Query(10, ge=1, le=100), + keyword: Optional[str] = None, + receptionSource: Optional[str] = None, + reviewConclusion: Optional[str] = None, + storageStatus: Optional[str] = None, + reviewPhase: Optional[str] = None, + qcWorkOrderCompleted: Optional[bool] = Query(None), + db: Session = Depends(get_db), + user: dict = Depends(require_menu_code("biz:storageReleaseReview:list")), +): + try: + tenant_no = _get_tenant_no(db, user) + result = srr_svc.list_reviews( + db, + tenant_no=tenant_no, + page=page, + page_size=pageSize, + reception_source=receptionSource, + review_conclusion=reviewConclusion, + storage_status=storageStatus, + keyword=keyword, + review_phase=reviewPhase, + qc_work_order_completed=qcWorkOrderCompleted, + user_info=user, + ) + return success_response(result) + except PermissionError as e: + return error_response(403, str(e)) + except Exception as e: + return error_response(400, str(e)) +``` + +说明:FastAPI 会把查询串 `true`/`false` 解析为 bool;缺省为 `None`(不过滤)。CRUD 内仍走 `normalize_qc_work_order_completed`,与单测一致。 + +- [ ] **Step 5: 跑单测确认通过** + +```bash +cd backend && source venv/bin/activate && pytest tests/test_storage_release_review_qc_completed.py tests/test_storage_release_review_phase.py -v +``` + +Expected: PASS + +- [ ] **Step 6: Commit** + +```bash +git add \ + backend/tests/test_storage_release_review_qc_completed.py \ + backend/app/crud/storage_release_review.py \ + backend/app/api/storage_release_review.py +git commit -m "$(cat <<'EOF' +feat(storage-release): filter pending list by QC work order completion + +Add qcWorkOrderCompleted query param and EXISTS-based sample_code filter +so pending reviews can default to QC-complete samples only. +EOF +)" +``` + +--- + +### Task 2: Frontend — API 类型 + 待审核筛选项与 Tab 行为 + +**Files:** +- Modify: `web-admin/src/api/storage-release-review.ts` +- Modify: `web-admin/src/views/quality-inspection/storage-release-review/index.vue` + +- [ ] **Step 1: API 参数增加 `qcWorkOrderCompleted`** + +修改 `web-admin/src/api/storage-release-review.ts` 中 `fetchStorageReleaseReviewList`: + +```typescript +export function fetchStorageReleaseReviewList(params?: { + page?: number + pageSize?: number + receptionSource?: string + reviewConclusion?: string + storageStatus?: string + keyword?: string + reviewPhase?: 'pending' | 'reviewed' + qcWorkOrderCompleted?: boolean +}) { + return request.get>({ + url: '/web/admin/storage-release-reviews', + params + }) +} +``` + +- [ ] **Step 2: 筛选区增加「质检工单是否完成」(仅待审核)** + +在 `index.vue` 筛选栅格中,于「入库状态」表单项之后增加(仅 `activeTab === 'pending'` 时渲染): + +```vue + + + + + +``` + +在 script 中增加选项与表单字段(`searchForm` 内): + +```typescript + /** '' = 全部;'true'/'false' 避免 el-select 对 boolean 的歧义 */ + const qcWorkOrderCompletedOptions = [ + { value: 'true', label: '是' }, + { value: 'false', label: '否' }, + { value: '', label: '全部' } + ] + + const searchForm = reactive({ + receptionSource: '', + reviewConclusion: '', + storageStatus: '', + keyword: '', + qcWorkOrderCompleted: 'true' as '' | 'true' | 'false' + }) +``` + +- [ ] **Step 3: `loadData` 仅待审核且非「全部」时传参** + +```typescript + async function loadData() { + loading.value = true + try { + const qcParam = + activeTab.value === 'pending' && searchForm.qcWorkOrderCompleted === 'true' + ? true + : activeTab.value === 'pending' && searchForm.qcWorkOrderCompleted === 'false' + ? false + : undefined + const res = await fetchStorageReleaseReviewList({ + page: pagination.page, + pageSize: pagination.pageSize, + receptionSource: searchForm.receptionSource || undefined, + reviewConclusion: searchForm.reviewConclusion || undefined, + storageStatus: searchForm.storageStatus || undefined, + keyword: searchForm.keyword || undefined, + reviewPhase: activeTab.value, + qcWorkOrderCompleted: qcParam + }) + tableData.value = res.list || [] + pagination.total = res.total ?? 0 + } finally { + loading.value = false + } + } +``` + +- [ ] **Step 4: 重置与切 Tab 行为** + +`handleReset`:其它字段清空;质检条件回到 `'true'`: + +```typescript + function handleReset() { + searchForm.receptionSource = '' + searchForm.reviewConclusion = '' + searchForm.storageStatus = '' + searchForm.keyword = '' + searchForm.qcWorkOrderCompleted = 'true' + pagination.page = 1 + loadData() + } +``` + +`handleTabChange`:切到待审核时恢复质检默认「是」;切到已审核时可不改字段(控件已隐藏且请求不传): + +```typescript + function handleTabChange(name: ReviewTab) { + if (activeTab.value === name) return + activeTab.value = name + pagination.page = 1 + selectedRows.value = [] + if (name === 'pending') { + searchForm.qcWorkOrderCompleted = 'true' + } + loadData() + } +``` + +- [ ] **Step 5: 本地冒烟(手动)** + +```bash +# web-admin 已在跑则刷新;否则: +cd web-admin && pnpm dev +``` + +打开 `http://localhost:3006/#/market/cell-storage/storage-release-review`,核对: + +1. 进入待审核:筛选项默认「是」,列表不含「无质检工单」待审核行 +2. 改为「否」→ 搜索:出现无工单或含 `dpz`/`ypz` 的行 +3. 「全部」→ 与改前待审核全集一致 +4. 切到已审核:该筛选项消失;切回待审核:条件回到「是」 +5. 重置:质检条件回到「是」 + +- [ ] **Step 6: Commit** + +```bash +git add \ + web-admin/src/api/storage-release-review.ts \ + web-admin/src/views/quality-inspection/storage-release-review/index.vue +git commit -m "$(cat <<'EOF' +feat(web-admin): default pending storage release to QC-complete samples + +Add QC work-order completion filter on the pending tab (default yes) and +pass qcWorkOrderCompleted to the list API. +EOF +)" +``` + +- [ ] **Step 7: 更新代码知识图谱(backend + frontend)** + +```bash +./scripts/update-graph.sh all +``` + +若图谱文件有变更则一并提交: + +```bash +git add backend/graphify-out web-admin/graphify-out +git commit -m "$(cat <<'EOF' +chore: update graphify after storage-release QC filter +EOF +)" +``` + +--- + +## Spec Coverage Checklist + +| Spec 要求 | Task | +|-----------|------| +| 待审核默认仅质检完成 | Task 2 默认 `'true'` + Task 1 `True` 过滤 | +| 筛选项 是/否/全部 | Task 2 UI | +| 全部质检工单(不限 trigger_source) | Task 1 EXISTS 无 trigger 条件 | +| 无工单 = 未完成 | Task 1 `False` 含 `~EXISTS` | +| `yzf` 视为完成 | Task 1 未完成仅 `dpz`/`ypz` | +| 仅待审核 | Task 2 `v-if` + 已审核不传参 | +| 重置 / 切回待审核 →「是」 | Task 2 `handleReset` / `handleTabChange` | +| 分页 total 正确 | Task 1 过滤在 count 之前 | +| 不改审核入库规则 | 无对应任务(刻意不做) | + +## Self-Review Notes + +- 无 TBD/TODO 占位 +- 参数名前后端一致:`qcWorkOrderCompleted` ↔ `qc_work_order_completed` +- 前端用字符串 `'true'|'false'|''` 绑 select,请求时转 boolean / omit,避免 Element Plus boolean 选项问题 diff --git a/docs/superpowers/specs/2026-07-16-storage-release-review-qc-completed-filter-design.md b/docs/superpowers/specs/2026-07-16-storage-release-review-qc-completed-filter-design.md new file mode 100644 index 00000000..ac53f511 --- /dev/null +++ b/docs/superpowers/specs/2026-07-16-storage-release-review-qc-completed-filter-design.md @@ -0,0 +1,159 @@ +# 入库放行审核 · 待审核默认仅展示质检工单已完成 + +> 日期:2026-07-16 +> 状态:已确认 + +> 模块:细胞存储 / 质检 → 入库放行审核 +> 关联:`docs/superpowers/specs/2026-07-16-storage-release-review-tabs-design.md` +> 界面模式:P22(审核列表) +> 参考页:`web-admin/src/views/quality-inspection/storage-release-review/index.vue` + +## 1. 背景与目标 + +### 现状 + +「待审核」Tab(`reviewPhase=pending`)仅按 `review_conclusion` 为空过滤,会列出**全部**待审核记录。入库放行记录在样本接收完成后即生成,质检工单是否完成**不参与**列表过滤。 + +### 目标 + +1. 待审核默认只展示:该样本编码下质检工单已判定为「完成」的记录。 +2. 筛选区增加「质检工单是否完成」,默认「是」,支持改为「否」或「全部」以查看其它待办。 +3. 分页与 `total` 与过滤条件一致。 + +### 范围外 + +- 不改审核弹窗、查看弹窗、入库业务规则 +- 不在后端强制「质检未完成禁止审核」(仅列表默认隐藏;选「否/全部」后仍可审核) +- 不改「已审核」Tab 的筛选与列表语义 +- 不新增菜单/路由;不改表结构 + +## 2. 需求确认记录 + +| 维度 | 决定 | +|------|------| +| 「完成」覆盖范围 | 样本下**全部**质检工单(不限 `trigger_source`) | +| 无质检工单 | 算**未完成** | +| 已作废 `yzf` | 视为已完成(与 `ywc` 同等) | +| 未完成状态码 | `dpz`(待配置)、`ypz`(已配置) | +| 作用 Tab | **仅「待审核」**;「已审核」不展示该条件、请求不带该参数 | +| 默认值 | 「是」 | +| 重置 | 回到「是」 | +| 从已审核切回待审核 | 质检条件**恢复默认「是」** | +| 实现路径 | 列表 API 增加查询参数 + 后端 SQL 过滤(方案 1) | + +## 3. 「质检工单是否完成」语义 + +在租户 `tenant_no` 下,关联键为审核行的 `sample_code`,工单条件:`biz_qc_work_order.del_flag = 0`。 + +| 筛选项 | 判定 | +|--------|------| +| **是** | 该样本**至少存在 1 条**质检工单,且**不存在** `work_order_status IN ('dpz','ypz')`(允许全为 `ywc` / `yzf`) | +| **否** | 该样本**无**质检工单,**或**存在至少一条 `dpz`/`ypz` | +| **全部** | 不按质检完成度过滤 | + +说明: + +- 仅作废工单(全是 `yzf`、无 `dpz`/`ypz`)→ 「是」 +- 零工单 → 「否」 +- 软删工单(`del_flag=1`)不参与统计 + +## 4. UI 与交互 + +### 4.1 筛选区(仅待审核可见) + +在现有筛选(关键词、协议类别、审核结论、入库状态)中增加: + +| 字段 | 控件 | 选项 | 默认 | +|------|------|------|------| +| 质检工单是否完成 | `el-select` | 是 / 否 / 全部 | 是 | + +「已审核」Tab:**不渲染**该表单项。 + +### 4.2 默认与重置 + +| 场景 | 质检条件 | +|------|----------| +| 首次进入页面(默认待审核) | 是 | +| 点击「重置」(待审核) | 是(其它筛选项清空逻辑不变) | +| 从「已审核」切回「待审核」 | **恢复「是」**,页码回 1,清空勾选,重新请求 | +| 待审核内切换其它筛选项 / 搜索 | 保留当前质检条件选择 | + +### 4.3 请求行为 + +- 待审核 + 「是」→ 传 `qcWorkOrderCompleted=true` +- 待审核 + 「否」→ 传 `qcWorkOrderCompleted=false` +- 待审核 + 「全部」→ **不传**该参数(或传空,后端视为不过滤) +- 已审核 → **不传**该参数 + +## 5. API 与数据流 + +### 5.1 接口 + +沿用 `GET /web/admin/storage-release-reviews`,新增可选查询参数: + +| 参数 | 类型 | 说明 | +|------|------|------| +| `qcWorkOrderCompleted` | `true` \| `false`(查询字符串布尔) | 缺省或不识别 → 不按质检完成度过滤 | + +其余参数不变:`page`、`pageSize`、`keyword`、`receptionSource`、`reviewConclusion`、`storageStatus`、`reviewPhase`。 + +### 5.2 后端过滤(叠在现有条件之后) + +在 `list_reviews` 中,当解析到明确布尔值时: + +**`true`(是)** — 样本编码满足: + +```text +EXISTS ( + 同租户、del_flag=0、sample_code = 审核行.sample_code 的质检工单 +) +AND NOT EXISTS ( + 同上,且 work_order_status IN ('dpz', 'ypz') +) +``` + +**`false`(否)** — 样本编码满足: + +```text +NOT EXISTS (任意有效工单) +OR EXISTS (有效工单且 work_order_status IN ('dpz', 'ypz')) +``` + +空 `sample_code` 的审核行:按「无工单」处理 → 仅「否」或「全部」可见,「是」不可见。 + +过滤必须在 **COUNT 与分页查询之前**应用,保证 `total` 正确。 + +### 5.3 实现提示 + +- 优先用 SQLAlchemy `exists()` 子查询,避免先拉全量再过滤。 +- 可抽小函数 `normalize_qc_work_order_completed(raw) -> Optional[bool]`,与 `normalize_review_phase` 风格一致;非法值视为 `None`(不过滤)。 + +## 6. 改动面 + +| 层 | 路径 | 变更 | +|----|------|------| +| Backend API | `backend/app/api/storage_release_review.py` | 增加 Query `qcWorkOrderCompleted` | +| Backend CRUD | `backend/app/crud/storage_release_review.py` | `list_reviews` 增加过滤;可选 normalize 辅助函数 | +| Backend 测试 | `backend/tests/` | 覆盖 normalize + 完成/未完成/无工单/仅作废语义(可先测纯函数,再视情况补集成) | +| Frontend API | `web-admin/src/api/storage-release-review.ts` | 列表参数增加 `qcWorkOrderCompleted?: boolean` | +| Frontend 页 | `web-admin/src/views/quality-inspection/storage-release-review/index.vue` | 待审核筛选项、默认/重置/切 Tab 行为、请求传参 | + +不改:审核/查看弹窗、菜单路由、表结构、已审核列表逻辑(除切回待审核时重置筛选项)。 + +## 7. 测试要点 + +1. 待审核默认:仅出现「质检已完成」样本;无工单样本不出现。 +2. 选「否」:出现无工单 + 含 `dpz`/`ypz` 的待审核。 +3. 选「全部」:与改前待审核集合一致(仅 `reviewPhase=pending`)。 +4. 仅 `yzf`(或 `ywc`+`yzf`、无未完成)→ 「是」可见。 +5. 已审核:无该筛选项;结果不受该参数影响。 +6. 重置、从已审核切回待审核 → 条件回到「是」。 +7. 分页 `total` 与当前过滤一致。 + +## 8. 方案取舍(记录) + +| 方案 | 结论 | +|------|------| +| 1. 列表 API 查询参数 + SQL 过滤 | **采用** | +| 2. 前端拉全量后过滤 | 拒绝(分页/total 错误) | +| 3. 审核表冗余完成标志 | 拒绝(写路径多、一致性成本高) | From 1ec3d0d775d7d3fb1f43798bbb4b4ad5d65058c8 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 16 Jul 2026 12:11:25 +0800 Subject: [PATCH 2/4] feat(storage-release): filter pending list by QC work order completion Add qcWorkOrderCompleted query param and EXISTS-based sample_code filter so pending reviews can default to QC-complete samples only. Co-authored-by: Cursor --- backend/app/api/storage_release_review.py | 2 + backend/app/crud/storage_release_review.py | 56 ++++++++++++++++++- ...est_storage_release_review_qc_completed.py | 21 +++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 backend/tests/test_storage_release_review_qc_completed.py diff --git a/backend/app/api/storage_release_review.py b/backend/app/api/storage_release_review.py index fdfb5d42..92b71744 100644 --- a/backend/app/api/storage_release_review.py +++ b/backend/app/api/storage_release_review.py @@ -43,6 +43,7 @@ async def list_storage_release_reviews( reviewConclusion: Optional[str] = None, storageStatus: Optional[str] = None, reviewPhase: Optional[str] = None, + qcWorkOrderCompleted: Optional[bool] = Query(None), db: Session = Depends(get_db), user: dict = Depends(require_menu_code("biz:storageReleaseReview:list")), ): @@ -58,6 +59,7 @@ async def list_storage_release_reviews( storage_status=storageStatus, keyword=keyword, review_phase=reviewPhase, + qc_work_order_completed=qcWorkOrderCompleted, user_info=user, ) return success_response(result) diff --git a/backend/app/crud/storage_release_review.py b/backend/app/crud/storage_release_review.py index 4f868e10..ad932e6b 100644 --- a/backend/app/crud/storage_release_review.py +++ b/backend/app/crud/storage_release_review.py @@ -4,7 +4,7 @@ import math from datetime import datetime from typing import Any, Dict, List, Optional -from sqlalchemy import func, or_ +from sqlalchemy import and_, exists, func, or_ from sqlalchemy.orm import Session from app.core.utils import generate_uuid @@ -133,6 +133,42 @@ def normalize_review_phase(review_phase: Optional[str]) -> Optional[str]: return None +def normalize_qc_work_order_completed(raw) -> Optional[bool]: + """Return True/False when recognizable; None means no filter.""" + if raw is None: + return None + if isinstance(raw, bool): + return raw + s = str(raw).strip().lower() + if s in ("true", "1", "yes"): + return True + if s in ("false", "0", "no"): + return False + return None + + +def _qc_work_order_exists_for_review_sample( + tenant_no: str, *, unfinished_only: bool = False +): + """Correlate biz_qc_work_order to BizStorageReleaseReview.sample_code.""" + conds = [ + BizQcWorkOrder.tenant_no == tenant_no, + BizQcWorkOrder.del_flag == 0, + BizQcWorkOrder.sample_code.isnot(None), + BizQcWorkOrder.sample_code != "", + BizQcWorkOrder.sample_code == BizStorageReleaseReview.sample_code, + BizStorageReleaseReview.sample_code.isnot(None), + BizStorageReleaseReview.sample_code != "", + ] + if unfinished_only: + conds.append(BizQcWorkOrder.work_order_status.in_(("dpz", "ypz"))) + return ( + exists() + .where(and_(*conds)) + .correlate(BizStorageReleaseReview) + ) + + def list_reviews( db: Session, *, @@ -144,6 +180,7 @@ def list_reviews( storage_status: Optional[str] = None, keyword: Optional[str] = None, review_phase: Optional[str] = None, + qc_work_order_completed=None, user_info=None, ) -> Dict[str, Any]: q0 = db.query(BizStorageReleaseReview).filter( @@ -190,6 +227,23 @@ def list_reviews( if lab_codes: kw_conds.append(BizStorageReleaseReview.sample_code.in_(lab_codes)) q0 = q0.filter(or_(*kw_conds)) + qc_done = normalize_qc_work_order_completed(qc_work_order_completed) + if qc_done is True: + q0 = q0.filter( + _qc_work_order_exists_for_review_sample(tenant_no, unfinished_only=False), + ~_qc_work_order_exists_for_review_sample(tenant_no, unfinished_only=True), + ) + elif qc_done is False: + q0 = q0.filter( + or_( + ~_qc_work_order_exists_for_review_sample( + tenant_no, unfinished_only=False + ), + _qc_work_order_exists_for_review_sample( + tenant_no, unfinished_only=True + ), + ) + ) if user_info: from app.core.data_scope import apply_data_scope q0 = apply_data_scope(q0, BizStorageReleaseReview, user_info, db, tenant_no) diff --git a/backend/tests/test_storage_release_review_qc_completed.py b/backend/tests/test_storage_release_review_qc_completed.py new file mode 100644 index 00000000..05b4afa8 --- /dev/null +++ b/backend/tests/test_storage_release_review_qc_completed.py @@ -0,0 +1,21 @@ +from app.crud.storage_release_review import normalize_qc_work_order_completed + + +def test_normalize_qc_work_order_completed_accepts_bool_and_strings(): + assert normalize_qc_work_order_completed(True) is True + assert normalize_qc_work_order_completed(False) is False + assert normalize_qc_work_order_completed("true") is True + assert normalize_qc_work_order_completed("TRUE") is True + assert normalize_qc_work_order_completed("1") is True + assert normalize_qc_work_order_completed("yes") is True + assert normalize_qc_work_order_completed("false") is False + assert normalize_qc_work_order_completed("0") is False + assert normalize_qc_work_order_completed("no") is False + assert normalize_qc_work_order_completed(" FALSE ") is False + + +def test_normalize_qc_work_order_completed_rejects_unknown(): + assert normalize_qc_work_order_completed(None) is None + assert normalize_qc_work_order_completed("") is None + assert normalize_qc_work_order_completed("all") is None + assert normalize_qc_work_order_completed("maybe") is None From 27355b5a5da29f0451d93407f9c56514a7dac98a Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 16 Jul 2026 12:15:50 +0800 Subject: [PATCH 3/4] feat(web-admin): default pending storage release to QC-complete samples Add QC work-order completion filter on the pending tab (default yes) and pass qcWorkOrderCompleted to the list API. Co-authored-by: Cursor --- web-admin/src/api/storage-release-review.ts | 1 + .../storage-release-review/index.vue | 37 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/web-admin/src/api/storage-release-review.ts b/web-admin/src/api/storage-release-review.ts index 4250ca14..17ffaf9d 100644 --- a/web-admin/src/api/storage-release-review.ts +++ b/web-admin/src/api/storage-release-review.ts @@ -145,6 +145,7 @@ export function fetchStorageReleaseReviewList(params?: { storageStatus?: string keyword?: string reviewPhase?: 'pending' | 'reviewed' + qcWorkOrderCompleted?: boolean }) { return request.get>({ url: '/web/admin/storage-release-reviews', diff --git a/web-admin/src/views/quality-inspection/storage-release-review/index.vue b/web-admin/src/views/quality-inspection/storage-release-review/index.vue index 66de8564..0b90d91b 100644 --- a/web-admin/src/views/quality-inspection/storage-release-review/index.vue +++ b/web-admin/src/views/quality-inspection/storage-release-review/index.vue @@ -79,6 +79,20 @@ /> + + + + +
@@ -386,11 +400,19 @@ { value: 'yrk', label: '已入库' } ] + /** '' = 全部;'true'/'false' 避免 el-select 对 boolean 的歧义 */ + const qcWorkOrderCompletedOptions = [ + { value: 'true', label: '是' }, + { value: 'false', label: '否' }, + { value: '', label: '全部' } + ] + const searchForm = reactive({ receptionSource: '', reviewConclusion: '', storageStatus: '', - keyword: '' + keyword: '', + qcWorkOrderCompleted: 'true' as '' | 'true' | 'false' }) const tableData = ref([]) const selectedRows = ref([]) @@ -412,6 +434,12 @@ async function loadData() { loading.value = true try { + const qcParam = + activeTab.value === 'pending' && searchForm.qcWorkOrderCompleted === 'true' + ? true + : activeTab.value === 'pending' && searchForm.qcWorkOrderCompleted === 'false' + ? false + : undefined const res = await fetchStorageReleaseReviewList({ page: pagination.page, pageSize: pagination.pageSize, @@ -419,7 +447,8 @@ reviewConclusion: searchForm.reviewConclusion || undefined, storageStatus: searchForm.storageStatus || undefined, keyword: searchForm.keyword || undefined, - reviewPhase: activeTab.value + reviewPhase: activeTab.value, + qcWorkOrderCompleted: qcParam }) tableData.value = res.list || [] pagination.total = res.total ?? 0 @@ -433,6 +462,9 @@ activeTab.value = name pagination.page = 1 selectedRows.value = [] + if (name === 'pending') { + searchForm.qcWorkOrderCompleted = 'true' + } loadData() } @@ -446,6 +478,7 @@ searchForm.reviewConclusion = '' searchForm.storageStatus = '' searchForm.keyword = '' + searchForm.qcWorkOrderCompleted = 'true' pagination.page = 1 loadData() } From 93d148f2d4eb68e20393c5902fae317a1150bd50 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 16 Jul 2026 12:16:18 +0800 Subject: [PATCH 4/4] chore: update graphify after storage-release QC filter Co-authored-by: Cursor --- backend/graphify-out/.graphify_analysis.json | 2677 ++++--- backend/graphify-out/.graphify_extract.json | 696 +- backend/graphify-out/GRAPH_REPORT.md | 207 +- backend/graphify-out/graph.html | 8 +- backend/graphify-out/graph.json | 6160 +++++++++-------- backend/graphify-out/manifest.json | 438 +- web-admin/graphify-out/.graphify_extract.json | 50 +- web-admin/graphify-out/GRAPH_REPORT.md | 2 +- web-admin/graphify-out/manifest.json | 1702 ++--- 9 files changed, 6342 insertions(+), 5598 deletions(-) diff --git a/backend/graphify-out/.graphify_analysis.json b/backend/graphify-out/.graphify_analysis.json index cb452625..dfdc4b09 100644 --- a/backend/graphify-out/.graphify_analysis.json +++ b/backend/graphify-out/.graphify_analysis.json @@ -2,7 +2,6 @@ "communities": { "0": [ "api_admin_attachment_download_url", - "api_admin_attachmentdownloadurlbody", "api_admin_create_dept", "api_admin_create_dict_data", "api_admin_create_dict_type", @@ -25,51 +24,17 @@ "api_admin_delete_site", "api_admin_delete_tenant", "api_admin_delete_user", - "api_admin_deptcreatebody", - "api_admin_deptupdatebody", - "api_admin_dict_data_options", - "api_admin_dictdatacreatebody", - "api_admin_dictdataupdatebody", - "api_admin_dicttypecreatebody", - "api_admin_dicttypeupdatebody", - "api_admin_expresscompanycreatebody", - "api_admin_expresscompanyupdatebody", - "api_admin_format_file_size", "api_admin_get_tenant_no", - "api_admin_get_user_by_id", - "api_admin_itemunitcreatebody", - "api_admin_itemunitupdatebody", - "api_admin_list_depts", "api_admin_list_dict_data", "api_admin_list_dict_types", "api_admin_list_express_companies", "api_admin_list_item_units", - "api_admin_list_menus", - "api_admin_list_post_bound_users", "api_admin_list_posts", - "api_admin_list_role_management", "api_admin_list_roles_for_designer", "api_admin_list_sites", - "api_admin_list_tenants", - "api_admin_list_users", - "api_admin_list_users_for_select", - "api_admin_menucreatebody", - "api_admin_menuupdatebody", - "api_admin_postcreatebody", - "api_admin_postupdatebody", - "api_admin_postusersupdatebody", "api_admin_rationale_110", "api_admin_rationale_1584", - "api_admin_rationale_78", "api_admin_reset_user_password", - "api_admin_rolecreatebody", - "api_admin_roledatascopebody", - "api_admin_rolemenubody", - "api_admin_roleupdatebody", - "api_admin_sitecreatebody", - "api_admin_siteupdatebody", - "api_admin_tenantcreatebody", - "api_admin_tenantupdatebody", "api_admin_update_dept", "api_admin_update_dict_data", "api_admin_update_dict_type", @@ -84,9 +49,6 @@ "api_admin_update_site", "api_admin_update_tenant", "api_admin_update_user", - "api_admin_upload_attachment", - "api_admin_usercreatebody", - "api_admin_userupdatebody", "api_basic_info_batch_generate_protocol_nos", "api_basic_info_batch_generate_sample_codes", "api_basic_info_batch_issue_protocol_nos", @@ -94,27 +56,30 @@ "api_basic_info_batch_revoke_protocol_nos", "api_basic_info_batch_revoke_sample_codes", "api_basic_info_create_cell_sample_type", - "api_basic_info_create_collection_region", "api_basic_info_create_customer", "api_basic_info_create_hospital", "api_basic_info_create_protocol_no", "api_basic_info_create_sample_code", - "api_basic_info_delete_cell_sample_type", - "api_basic_info_delete_collection_region", - "api_basic_info_delete_customer", - "api_basic_info_delete_protocol_no", - "api_basic_info_delete_sample_code", - "api_basic_info_get_tenant_no", - "api_basic_info_list_hospitals", - "api_basic_info_list_sample_codes", "api_basic_info_update_cell_sample_type", - "api_basic_info_update_collection_region", "api_basic_info_update_customer", - "api_basic_info_update_hospital", "api_basic_info_update_protocol_no", "api_basic_info_update_sample_code", "api_cleanroom_garment_batch_create_sterilize_logs", "api_cleanroom_garment_batch_create_wash_logs", + "api_cleanroom_garment_batch_delete_cleanroom_garments", + "api_cleanroom_garment_batch_discard_cleanroom_garments", + "api_cleanroom_garment_create_cleanroom_garment", + "api_cleanroom_garment_create_sterilize_log", + "api_cleanroom_garment_create_wash_log", + "api_cleanroom_garment_delete_cleanroom_garment", + "api_cleanroom_garment_delete_sterilize_log", + "api_cleanroom_garment_delete_wash_log", + "api_cleanroom_garment_discard_cleanroom_garment", + "api_cleanroom_garment_get_cleanroom_garment", + "api_cleanroom_garment_get_tenant_no", + "api_cleanroom_garment_update_cleanroom_garment", + "api_cleanroom_garment_update_sterilize_log", + "api_cleanroom_garment_update_wash_log", "api_clinical_payment_api_batch_submit_receipt", "api_clinical_payment_api_batch_submit_refund", "api_clinical_payment_api_confirm_receipt", @@ -131,9 +96,37 @@ "api_clinical_payment_api_submit_refund", "api_clinical_payment_get_tenant_no", "api_collection_protocol_draft_fields_from_body", + "api_collection_protocol_post_receipt_confirm", + "api_collection_protocol_post_receipt_reject", + "api_collection_protocol_post_refund_confirm", + "api_collection_protocol_post_refund_reject", "api_collection_protocol_post_submit_receipt_finance", + "api_collection_protocol_post_submit_receipt_finance_batch", + "api_collection_protocol_post_submit_refund_finance", + "api_collection_protocol_post_submit_refund_finance_batch", "api_collection_protocol_put_payment_detail_draft", + "api_collection_protocol_submit_collection_protocol_audit", + "api_env_detect_create_env_detect_item", + "api_env_detect_create_env_detect_record", + "api_env_detect_delete_env_detect_item", + "api_env_detect_delete_env_detect_record", + "api_env_detect_envdetectitembody", + "api_env_detect_envdetectitemupdatebody", + "api_env_detect_envdetectrecordbody", + "api_env_detect_envdetectrecordupdatebody", + "api_env_detect_get_current_user_id", + "api_env_detect_get_env_detect_item", "api_env_detect_get_env_detect_record", + "api_env_detect_get_tenant_no", + "api_env_detect_list_active_env_detect_items", + "api_env_detect_list_env_detect_items", + "api_env_detect_list_env_detect_records", + "api_env_detect_page_payload", + "api_env_detect_parse_detect_date", + "api_env_detect_parse_detect_date_bound", + "api_env_detect_rationale_1", + "api_env_detect_update_env_detect_item", + "api_env_detect_update_env_detect_record", "api_insurance_company_create_insurance_company", "api_insurance_company_create_insurance_company_invoice", "api_insurance_company_create_insurance_project_price", @@ -142,6 +135,12 @@ "api_insurance_company_delete_insurance_project_price", "api_insurance_company_generate_uuid", "api_insurance_company_get_tenant_no", + "api_insurance_company_insurancecompanycreatebody", + "api_insurance_company_insurancecompanyinvoicecreatebody", + "api_insurance_company_insurancecompanyinvoiceupdatebody", + "api_insurance_company_insurancecompanyupdatebody", + "api_insurance_company_insuranceprojectpricecreatebody", + "api_insurance_company_insuranceprojectpriceupdatebody", "api_insurance_company_list_insurance_companies", "api_insurance_company_list_insurance_company_invoices", "api_insurance_company_list_insurance_project_prices", @@ -237,31 +236,18 @@ "api_pilot_checkup_api_delete_actual_item", "api_pilot_checkup_api_delete_checkup", "api_pilot_checkup_api_delete_reserve_item", - "api_pilot_checkup_api_get_checkup_detail", - "api_pilot_checkup_api_list_actual_items", - "api_pilot_checkup_api_list_checkups", - "api_pilot_checkup_api_list_pending_patients", - "api_pilot_checkup_api_list_reserve_items", "api_pilot_checkup_api_mark_checked", "api_pilot_checkup_api_save_actual_items", "api_pilot_checkup_api_save_checkup", "api_pilot_checkup_api_save_reserve_items", "api_pilot_checkup_api_settle_fee", "api_pilot_checkup_get_tenant_no", - "api_pilot_checkup_rationale_1", "api_pilot_delivery_create_delivery", "api_pilot_delivery_get_tenant_no", "api_pilot_delivery_list_materials", "api_pilot_delivery_save_materials", "api_pilot_delivery_save_method", "api_pilot_delivery_soft_delete", - "api_pilot_infusion_confirm_api_confirm", - "api_pilot_infusion_confirm_api_create", - "api_pilot_infusion_confirm_api_delete", - "api_pilot_infusion_confirm_api_detail", - "api_pilot_infusion_confirm_api_list", - "api_pilot_infusion_confirm_api_update", - "api_pilot_infusion_confirm_get_tenant_no", "api_pilot_infusion_schedule_mgmt_api_get_outbound_handover", "api_pilot_infusion_schedule_mgmt_api_save_outbound_handover", "api_pilot_infusion_schedule_mgmt_api_update", @@ -307,29 +293,19 @@ "api_pilot_service_delete_project_system", "api_pilot_service_delete_project_system_item", "api_pilot_service_get_channel_account_info", - "api_pilot_service_get_channel_service_order_detail", "api_pilot_service_get_checkup_institution_package_detail", "api_pilot_service_get_service_order_txn_detail", "api_pilot_service_get_tenant_no", - "api_pilot_service_list_cell_product_prices", - "api_pilot_service_list_cell_product_specs", - "api_pilot_service_list_cell_product_types", "api_pilot_service_list_channel_agreement_prices", "api_pilot_service_list_channel_agreements", "api_pilot_service_list_channel_invoices", "api_pilot_service_list_channel_mail_addresses", "api_pilot_service_list_channel_product_quotas", - "api_pilot_service_list_channel_service_orders", - "api_pilot_service_list_channels", "api_pilot_service_list_checkup_institution_invoices", "api_pilot_service_list_checkup_institution_packages", "api_pilot_service_list_checkup_institution_projects", - "api_pilot_service_list_checkup_institutions", "api_pilot_service_list_project_system_items", - "api_pilot_service_list_project_systems", - "api_pilot_service_list_service_order_txns", "api_pilot_service_package_items_to_crud", - "api_pilot_service_rationale_1", "api_pilot_service_submit_service_order_finance_confirm", "api_pilot_service_submit_service_order_refund", "api_pilot_service_submit_txn_finance", @@ -434,8 +410,11 @@ "api_production_list_reagents", "api_production_list_sop_documents", "api_production_material_batch_discard_production_material", + "api_production_material_batch_discard_production_material_batches", "api_production_material_batch_stock_in_production_material", + "api_production_material_batch_stock_in_production_material_batches", "api_production_material_batch_stock_out_production_material", + "api_production_material_batch_stock_out_production_material_batches", "api_production_material_cancel_production_material_prep", "api_production_material_cancel_production_material_stock_check", "api_production_material_complete_production_material_prep", @@ -468,6 +447,9 @@ "api_production_material_rationale_1081", "api_production_material_rationale_1259", "api_production_material_rationale_1318", + "api_production_material_rationale_552", + "api_production_material_rationale_562", + "api_production_material_rationale_572", "api_production_material_rationale_646", "api_production_material_rationale_680", "api_production_material_rationale_713", @@ -523,10 +505,8 @@ "api_protocol_sample_collection_get_tenant_no", "api_protocol_sample_collection_list_protocol_sample_collections", "api_protocol_sample_collection_page_payload", - "api_public_build_current_user_payload", - "api_public_get_current_user_profile", - "api_public_rationale_265", - "api_public_rationale_73", + "api_public_get_web_auth_menu_codes", + "api_public_rationale_381", "api_qc_batch_discard_qc_material", "api_qc_batch_discard_qc_material_batches", "api_qc_batch_list_qc_work_order_inspection_batches", @@ -624,9 +604,6 @@ "api_research_donation_get_current_user_id", "api_research_donation_get_research_donation_detail", "api_research_donation_get_tenant_no", - "api_research_donation_sample_collection_get_tenant_no", - "api_research_donation_sample_collection_list_donation_sample_collections", - "api_research_donation_sample_collection_page_payload", "api_research_donation_submit_donation_audit", "api_research_donation_update_research_donation", "api_sample_reception_allocate_lab_storage_codes", @@ -660,7 +637,6 @@ "api_workflow_list_versions", "api_workflow_publish_version", "api_workflow_reject_task", - "api_workflow_start_instance", "api_workflow_update_process_def", "core_menu_guard_rationale_28", "core_menu_guard_strip_row_fields", @@ -673,69 +649,85 @@ "crud_base_crudbase_get", "crud_clinical_payment_list_payments", "crud_clinical_payment_row_to_dict", - "crud_exhibition_appointment_total_pages", "crud_pilot_delivery_rationale_643", "crud_pilot_delivery_save_delivery_method", - "crud_pilot_service_enrich_finance_operate_fields", - "crud_pilot_service_rationale_2835", - "crud_pilot_service_rationale_2874", "crud_pilot_service_row_to_dict_channel_agreement", "crud_pilot_service_row_to_dict_service_order", "crud_pilot_service_row_to_dict_service_order_txn", - "crud_pilot_service_service_order_txn_to_response_dict", - "crud_post_get_post", - "crud_post_soft_delete_post", "crud_process_route_update_step", - "crud_production_task_enrich_assignee_names", "crud_production_task_get_production_task_editor_init", "crud_production_task_rationale_1826", - "crud_production_task_task_to_dict", "crud_production_task_update_task_step", "crud_qc_material_batch_stock_in", "crud_qc_material_batch_stock_out", "crud_qc_material_rationale_345", "crud_qc_material_rationale_492", + "crud_qc_material_stock_batch_batch_discard", + "crud_qc_material_stock_batch_batch_options", + "crud_qc_material_stock_batch_batch_row_to_dict", + "crud_qc_material_stock_batch_fmt_date", + "crud_qc_material_stock_batch_list_batches", "crud_qc_material_usage_mark_requisition_fully_used", "crud_research_donation_change_status", "schemas_order_adjust_adjuststatus", "schemas_order_adjust_adjusttype", "schemas_order_adjust_py", "str", - "users_wuzilong_work_00code_zkxw_backend_app_api_admin_py", "users_wuzilong_work_00code_zkxw_backend_app_api_clinical_payment_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_env_detect_py", "users_wuzilong_work_00code_zkxw_backend_app_api_insurance_company_py", "users_wuzilong_work_00code_zkxw_backend_app_api_market_py", - "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_checkup_py", - "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_infusion_confirm_py", - "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_service_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_production_material_py", "users_wuzilong_work_00code_zkxw_backend_app_api_production_py", "users_wuzilong_work_00code_zkxw_backend_app_api_protocol_sample_collection_py", "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", - "users_wuzilong_work_00code_zkxw_backend_app_api_research_donation_sample_collection_py", "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py" ], "1": [ - "api_basic_info_cellsampletypecreatebody", - "api_basic_info_cellsampletypeupdatebody", - "api_basic_info_collectionregioncreatebody", - "api_basic_info_collectionregionupdatebody", - "api_basic_info_customercreatebody", - "api_basic_info_customerupdatebody", - "api_basic_info_hospitalcreatebody", - "api_basic_info_hospitalupdatebody", - "api_basic_info_list_cell_sample_types", - "api_basic_info_list_customers", - "api_basic_info_protocolnobatchgeneratebody", - "api_basic_info_protocolnobatchissuebody", - "api_basic_info_protocolnobatchrevokebody", - "api_basic_info_protocolnocreatebody", - "api_basic_info_protocolnoupdatebody", - "api_basic_info_rationale_1", - "api_basic_info_samplecodebatchgeneratebody", - "api_basic_info_samplecodebatchissuebody", - "api_basic_info_samplecodebatchrevokebody", - "api_basic_info_samplecodecreatebody", - "api_basic_info_samplecodeupdatebody", + "api_admin_attachmentdownloadurlbody", + "api_admin_deptcreatebody", + "api_admin_deptupdatebody", + "api_admin_dictdatacreatebody", + "api_admin_dictdataupdatebody", + "api_admin_dicttypecreatebody", + "api_admin_dicttypeupdatebody", + "api_admin_expresscompanycreatebody", + "api_admin_expresscompanyupdatebody", + "api_admin_format_file_size", + "api_admin_itemunitcreatebody", + "api_admin_itemunitupdatebody", + "api_admin_list_users_for_select", + "api_admin_menucreatebody", + "api_admin_menuupdatebody", + "api_admin_postcreatebody", + "api_admin_postupdatebody", + "api_admin_postusersupdatebody", + "api_admin_rationale_78", + "api_admin_rolecreatebody", + "api_admin_roledatascopebody", + "api_admin_rolemenubody", + "api_admin_roleupdatebody", + "api_admin_sitecreatebody", + "api_admin_siteupdatebody", + "api_admin_tenantcreatebody", + "api_admin_tenantupdatebody", + "api_admin_upload_attachment", + "api_admin_usercreatebody", + "api_admin_userupdatebody", + "api_cleanroom_garment_garmentbatchdeletebody", + "api_cleanroom_garment_garmentbatchdiscardbody", + "api_cleanroom_garment_garmentcreatebody", + "api_cleanroom_garment_garmentdiscardbody", + "api_cleanroom_garment_garmentupdatebody", + "api_cleanroom_garment_list_cleanroom_garments", + "api_cleanroom_garment_list_sterilize_logs", + "api_cleanroom_garment_list_wash_logs", + "api_cleanroom_garment_sterilizelogbatchbody", + "api_cleanroom_garment_sterilizelogcreatebody", + "api_cleanroom_garment_sterilizelogupdatebody", + "api_cleanroom_garment_washlogbatchbody", + "api_cleanroom_garment_washlogcreatebody", + "api_cleanroom_garment_washlogupdatebody", "api_clinical_payment_batchpaymentidsbody", "api_clinical_payment_batchsubmitreceiptbody", "api_clinical_payment_batchsubmitrefundbody", @@ -744,12 +736,6 @@ "api_clinical_payment_paymentidbody", "api_clinical_payment_submitreceiptbody", "api_clinical_payment_submitrefundbody", - "api_insurance_company_insurancecompanycreatebody", - "api_insurance_company_insurancecompanyinvoicecreatebody", - "api_insurance_company_insurancecompanyinvoiceupdatebody", - "api_insurance_company_insurancecompanyupdatebody", - "api_insurance_company_insuranceprojectpricecreatebody", - "api_insurance_company_insuranceprojectpriceupdatebody", "api_material_batch_discard_material_batches", "api_material_batch_stock_in_material_batches", "api_material_batch_stock_out_material_batches", @@ -772,8 +758,8 @@ "api_operations_cleanroomupdatebody", "api_operations_exhibitionappointmentcreatebody", "api_operations_exhibitionappointmentupdatebody", - "api_operations_list_clean_rooms", "api_operations_list_exhibition_appointments", + "api_operations_list_storage_slot_select_options", "api_operations_normalize_visit_date_bound", "api_operations_occupancycreatebody", "api_operations_rationale_1", @@ -787,6 +773,7 @@ "api_operations_uvdisinfectlogcreatebody", "api_operations_uvdisinfectlogupdatebody", "api_pilot_application_api_get_patient", + "api_pilot_application_api_list_applications", "api_pilot_application_api_list_plans", "api_pilot_application_api_list_schedules", "api_pilot_application_applicationcreatebody", @@ -809,22 +796,13 @@ "api_pilot_application_schedulecreatebody", "api_pilot_application_scheduleidbody", "api_pilot_application_scheduleproductnestedbody", - "api_pilot_checkup_batchcheckupsavebody", - "api_pilot_checkup_checkupitembody", - "api_pilot_checkup_checkupitemssavebody", - "api_pilot_checkup_checkupsavebody", - "api_pilot_checkup_idbody", "api_pilot_delivery_deliverycreatebody", "api_pilot_delivery_deliverymaterialitem", "api_pilot_delivery_deliverymaterialsavebody", "api_pilot_delivery_deliverymethodsavebody", "api_pilot_delivery_deliverysavebody", - "api_pilot_delivery_get_by_schedule", "api_pilot_delivery_idbody", "api_pilot_delivery_rationale_1", - "api_pilot_infusion_confirm_confirmcreatebody", - "api_pilot_infusion_confirm_confirmupdatebody", - "api_pilot_infusion_confirm_idbody", "api_pilot_service_cellproductpricecreatebody", "api_pilot_service_cellproductpriceupdatebody", "api_pilot_service_cellproductspeccreatebody", @@ -856,6 +834,7 @@ "api_pilot_service_projectsystemitemcreatebody", "api_pilot_service_projectsystemitemupdatebody", "api_pilot_service_projectsystemupdatebody", + "api_pilot_service_rationale_1", "api_pilot_service_refundconfirmbody", "api_pilot_service_refundsubmitbody", "api_pilot_service_serviceordercreatebody", @@ -880,9 +859,6 @@ "api_production_equipmentcreatebody", "api_production_equipmentupdatebody", "api_production_material_availablematerialbatch", - "api_production_material_batch_discard_production_material_batches", - "api_production_material_batch_stock_in_production_material_batches", - "api_production_material_batch_stock_out_production_material_batches", "api_production_material_batchdiscardbody", "api_production_material_batchdiscarditem", "api_production_material_batchstockinbody", @@ -899,9 +875,6 @@ "api_production_material_productionmaterialupdatebody", "api_production_material_quickprepbody", "api_production_material_quickpreplinebody", - "api_production_material_rationale_552", - "api_production_material_rationale_562", - "api_production_material_rationale_572", "api_production_material_stockcheckcreatebody", "api_production_material_stockcheckunusedlineitem", "api_production_material_stockcheckunusedlinesbody", @@ -1320,12 +1293,13 @@ "schemas_workflow_taskresponse", "schemas_workflow_transitiondata", "schemas_workflow_versionresponse", - "users_wuzilong_work_00code_zkxw_backend_app_api_basic_info_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_admin_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_cleanroom_garment_py", "users_wuzilong_work_00code_zkxw_backend_app_api_material_py", "users_wuzilong_work_00code_zkxw_backend_app_api_operations_py", "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_application_py", "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_delivery_py", - "users_wuzilong_work_00code_zkxw_backend_app_api_production_material_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_service_py", "users_wuzilong_work_00code_zkxw_backend_app_schemas_attachment_py", "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", @@ -1351,8 +1325,6 @@ "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py" ], "2": [ - "api_admin_get_role_data_scope", - "api_admin_get_role_menus", "base", "crud_clean_room_create_access_log", "crud_collection_region_create_collection_region", @@ -1378,21 +1350,38 @@ "crud_pilot_service_create_checkup_institution_invoice", "crud_pilot_service_create_checkup_institution_project", "crud_pilot_service_create_project_system_item", - "crud_qc_material_stock_check_create_check", - "crud_qc_material_stock_check_parse_check_time", + "crud_process_category_category_code_exists", + "crud_process_category_create_process_category", + "crud_process_category_get_process_category", + "crud_process_category_list_process_categories", + "crud_process_category_rationale_1", + "crud_process_category_row_to_dict", + "crud_process_category_soft_delete_process_category", + "crud_process_category_total_pages", + "crud_process_category_update_process_category", + "crud_process_consumable_row_to_dict", + "crud_process_create_process", + "crud_process_create_sub_consumable", + "crud_process_create_sub_data_collection", + "crud_process_create_sub_output", + "crud_process_create_sub_reagent", + "crud_process_data_collection_row_to_dict", + "crud_process_get_process", + "crud_process_get_process_detail", + "crud_process_list_all_processes", + "crud_process_list_processes", + "crud_process_output_row_to_dict", + "crud_process_process_code_exists", + "crud_process_rationale_1", + "crud_process_rationale_277", + "crud_process_reagent_row_to_dict", + "crud_process_row_to_dict", + "crud_process_soft_delete_process", + "crud_process_soft_delete_sub_records", + "crud_process_sub_item_with_order", + "crud_process_total_pages", + "crud_process_update_process", "crud_research_donation_convert_from_storage", - "crud_role_create_role", - "crud_role_get_role", - "crud_role_get_role_data_scope", - "crud_role_get_role_menu_ids", - "crud_role_list_roles", - "crud_role_rationale_1", - "crud_role_role_name_exists", - "crud_role_row_to_dict", - "crud_role_soft_delete_role", - "crud_role_total_pages", - "crud_role_update_role", - "crud_role_update_role_data_scope", "crud_role_update_role_menus", "crud_storage_release_review_batch_store_samples", "crud_storage_release_review_batch_submit_review", @@ -1411,35 +1400,21 @@ "crud_storage_release_review_get_storage_release_map_for_samples", "crud_storage_release_review_get_user_name", "crud_storage_release_review_list_reviews", + "crud_storage_release_review_normalize_qc_work_order_completed", "crud_storage_release_review_normalize_review_phase", "crud_storage_release_review_py", + "crud_storage_release_review_qc_work_order_exists_for_review_sample", "crud_storage_release_review_rationale_129", - "crud_storage_release_review_rationale_587", - "crud_storage_release_review_rationale_607", - "crud_storage_release_review_rationale_776", + "crud_storage_release_review_rationale_137", + "crud_storage_release_review_rationale_153", + "crud_storage_release_review_rationale_641", + "crud_storage_release_review_rationale_661", + "crud_storage_release_review_rationale_830", "crud_storage_release_review_row_to_dict", "crud_storage_release_review_store_sample", "crud_storage_release_review_submit_review", "crud_storage_release_review_total_pages", - "crud_user_create_user", - "crud_user_replace_associations", - "crud_workflow_create_instance", - "crud_workflow_create_process_def", - "crud_workflow_get_process_def", - "crud_workflow_list_completed_tasks", - "crud_workflow_list_my_instances", - "crud_workflow_list_pending_tasks", - "crud_workflow_list_process_defs", - "crud_workflow_list_versions", - "crud_workflow_process_code_exists", "crud_workflow_publish_version", - "crud_workflow_rationale_1", - "crud_workflow_row_to_dict", - "crud_workflow_soft_delete_process_def", - "crud_workflow_task_row_to_dict", - "crud_workflow_total_pages", - "crud_workflow_update_process_def", - "crud_workflow_version_to_dict", "models_base_basemodel", "models_base_basemodel_to_dict", "models_base_get_active", @@ -1456,8 +1431,10 @@ "models_material_bizmaterialstocklog", "models_models_bizattachment", "models_models_bizbiznosequence", + "models_models_bizcellproductprice", "models_models_bizcellproductprojectsystemitem", "models_models_bizcellproducttype", + "models_models_bizcellsampletype", "models_models_bizchannel", "models_models_bizchannelaccount", "models_models_bizchannelagreement", @@ -1471,6 +1448,7 @@ "models_models_bizcheckupinstitutionproject", "models_models_bizcleanroom", "models_models_bizcleanroomaccesslog", + "models_models_bizcleanroomuvdisinfectlog", "models_models_bizcollectionhospital", "models_models_bizcollectionprotocol", "models_models_bizcollectionprotocolno", @@ -1479,6 +1457,7 @@ "models_models_bizconsumablepack", "models_models_bizconsumablepackitem", "models_models_bizcustomer", + "models_models_bizenvdetectitem", "models_models_bizenvdetectrecord", "models_models_bizequipment", "models_models_bizexhibitionappointment", @@ -1496,6 +1475,7 @@ "models_models_bizoutboundreleasereview", "models_models_bizoutputtype", "models_models_bizpilotapplication", + "models_models_bizpilotcheckupreserveitem", "models_models_bizpilotdelivery", "models_models_bizpilotdeliverymaterial", "models_models_bizpilotdeliverymethod", @@ -1528,14 +1508,15 @@ "models_models_bizprotocolsample", "models_models_bizprotocolsampletransport", "models_models_bizprotocolstoragecert", - "models_models_bizqcbatchassignee", "models_models_bizqclabtestitem", "models_models_bizqcsmsnotification", "models_models_bizqctask", "models_models_bizqctaskassignee", - "models_models_bizqcthirdpartycompany", + "models_models_bizqcthirdpartyitem", "models_models_bizqcworkorder", "models_models_bizqcworkorderinspectionbatch", + "models_models_bizqcworkorderlabitem", + "models_models_bizqcworkorderthirditem", "models_models_bizreagent", "models_models_bizsamplecode", "models_models_bizsampleproductionreception", @@ -1550,7 +1531,6 @@ "models_models_rationale_1", "models_models_rationale_1000", "models_models_rationale_1033", - "models_models_rationale_107", "models_models_rationale_1085", "models_models_rationale_11", "models_models_rationale_1106", @@ -1558,18 +1538,21 @@ "models_models_rationale_1148", "models_models_rationale_1187", "models_models_rationale_1246", - "models_models_rationale_1300", + "models_models_rationale_1328", "models_models_rationale_1350", "models_models_rationale_1371", "models_models_rationale_1420", - "models_models_rationale_1441", + "models_models_rationale_1460", + "models_models_rationale_1483", "models_models_rationale_1543", "models_models_rationale_1590", + "models_models_rationale_1615", "models_models_rationale_1638", "models_models_rationale_1683", "models_models_rationale_1709", "models_models_rationale_1737", "models_models_rationale_176", + "models_models_rationale_1775", "models_models_rationale_1820", "models_models_rationale_1871", "models_models_rationale_1921", @@ -1585,7 +1568,6 @@ "models_models_rationale_2335", "models_models_rationale_2373", "models_models_rationale_2395", - "models_models_rationale_242", "models_models_rationale_2443", "models_models_rationale_2467", "models_models_rationale_2491", @@ -1608,6 +1590,8 @@ "models_models_rationale_3169", "models_models_rationale_3199", "models_models_rationale_3228", + "models_models_rationale_323", + "models_models_rationale_3338", "models_models_rationale_3378", "models_models_rationale_3397", "models_models_rationale_3418", @@ -1619,6 +1603,7 @@ "models_models_rationale_3537", "models_models_rationale_3562", "models_models_rationale_3587", + "models_models_rationale_3613", "models_models_rationale_3633", "models_models_rationale_364", "models_models_rationale_383", @@ -1628,7 +1613,6 @@ "models_models_rationale_573", "models_models_rationale_622", "models_models_rationale_665", - "models_models_rationale_686", "models_models_rationale_69", "models_models_rationale_737", "models_models_rationale_792", @@ -1647,25 +1631,19 @@ "models_models_sysmenu", "models_models_syspost", "models_models_sysrole", - "models_models_sysroledatascopedetail", "models_models_sysrolemenu", "models_models_syssite", "models_models_systenant", "models_models_sysuser", - "models_models_sysuserpost", "models_models_sysuserrole", "models_models_userrole", "models_models_wfnode", "models_models_wfprocessdef", - "models_models_wfprocessinstance", "models_models_wfprocessversion", "models_models_wftask", "models_models_wftransition", - "models_qc_material_bizqcmaterial", - "models_qc_material_bizqcmaterialstockbatch", - "models_qc_material_bizqcmaterialstockcheck", - "models_qc_material_bizqcmaterialstockcheckbatchline", - "models_qc_material_bizqcmaterialstockcheckunusedline", + "models_qc_param_bizqcitemparam", + "models_qc_param_bizqctaskresult", "models_research_donation_bizprotocoldonationconvert", "models_research_donation_bizresearchdonation", "models_research_donation_bizresearchdonationaudit", @@ -1681,14 +1659,16 @@ "models_research_donation_rationale_47", "models_research_donation_rationale_68", "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_workflow_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", - "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", + "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py" ], "3": [ + "api_admin_list_tenants", + "api_admin_list_users", "api_basic_info_normalize_date_bound", "api_collection_protocol_auditcreatebody", "api_collection_protocol_batchdetailidsbody", @@ -1696,7 +1676,6 @@ "api_collection_protocol_complete_protocol_invoice_request", "api_collection_protocol_create_collection_protocol", "api_collection_protocol_delete_collection_protocol", - "api_collection_protocol_ensure_customer_for_mother", "api_collection_protocol_financeconfirmbody", "api_collection_protocol_fullmoontodoinsurancebody", "api_collection_protocol_get_collection_protocol_detail", @@ -1720,50 +1699,55 @@ "api_collection_protocol_paymentdetaildraftbody", "api_collection_protocol_persist_protocol_sub_resources", "api_collection_protocol_post_protocol_invoice_request", - "api_collection_protocol_post_receipt_confirm", - "api_collection_protocol_post_receipt_reject", - "api_collection_protocol_post_refund_confirm", - "api_collection_protocol_post_refund_reject", - "api_collection_protocol_post_submit_receipt_finance_batch", - "api_collection_protocol_post_submit_refund_finance", - "api_collection_protocol_post_submit_refund_finance_batch", "api_collection_protocol_protocol_accessible", "api_collection_protocol_protocol_invoice_pending_count", "api_collection_protocol_protocolcreatebody", "api_collection_protocol_protocolupdatebody", "api_collection_protocol_rationale_1", "api_collection_protocol_rationale_49", - "api_collection_protocol_rationale_83", "api_collection_protocol_refundfinanceconfirmbody", "api_collection_protocol_refundfinancesubmitbody", "api_collection_protocol_resolve_consent_form_urls", "api_collection_protocol_resolve_health_survey_form_urls", "api_collection_protocol_resolve_protocol_attachments", - "api_collection_protocol_submit_collection_protocol_audit", "api_collection_protocol_update_collection_protocol", "api_collection_protocol_update_fullmoon_todo_insurance", + "api_ethnic_list_ethnics_for_select", "api_insurance_company_fmt_dt", + "api_operations_list_clean_rooms", + "api_pilot_service_list_cell_product_prices", + "api_pilot_service_list_cell_product_specs", + "api_pilot_service_list_cell_product_types", + "api_pilot_service_list_channel_service_orders", + "api_pilot_service_list_channels", + "api_pilot_service_list_checkup_institutions", + "api_pilot_service_list_project_systems", "api_pre_transit_sample_get_tenant_no", "api_pre_transit_sample_list_in_transit_samples", "api_pre_transit_sample_list_pre_delivery_samples", "api_pre_transit_sample_page_payload", + "api_research_donation_sample_collection_get_tenant_no", + "api_research_donation_sample_collection_list_donation_sample_collections", + "api_research_donation_sample_collection_page_payload", + "core_data_scope_apply_data_scope", + "core_data_scope_get_child_dept_ids", + "core_data_scope_get_user_dept_id", + "core_data_scope_rationale_1", + "core_data_scope_rationale_113", + "core_data_scope_rationale_28", + "core_data_scope_rationale_38", + "core_data_scope_rationale_65", + "core_data_scope_resolve_user_role_scopes", "core_utils_format_date", + "core_utils_format_datetime", + "core_utils_generate_random_password", + "core_utils_get_current_time", + "core_utils_get_file_size_display", + "core_utils_optional_date", + "core_utils_parse_date", + "core_utils_py", + "core_utils_rationale_71", "crud_base_crudbase_exists", - "crud_clinical_payment_apply_submit_receipt", - "crud_clinical_payment_batch_submit_receipt", - "crud_clinical_payment_batch_submit_refund", - "crud_clinical_payment_confirm_receipt", - "crud_clinical_payment_confirm_refund", - "crud_clinical_payment_enrich_payment", - "crud_clinical_payment_get_or_raise", - "crud_clinical_payment_get_payment_by_schedule", - "crud_clinical_payment_get_payment_detail", - "crud_clinical_payment_map_payments_by_schedule_id", - "crud_clinical_payment_rationale_74", - "crud_clinical_payment_reject_receipt", - "crud_clinical_payment_reject_refund", - "crud_clinical_payment_submit_receipt", - "crud_clinical_payment_submit_refund", "crud_collection_protocol_active_invoiced_payment_detail_ids", "crud_collection_protocol_add_months_yyyymmdd", "crud_collection_protocol_align_fq_payment_details_payload", @@ -1791,7 +1775,6 @@ "crud_collection_protocol_detail_query_with_protocol", "crud_collection_protocol_detail_to_dict", "crud_collection_protocol_fmt_dt", - "crud_collection_protocol_format_attachment_file_size", "crud_collection_protocol_format_newborn_info", "crud_collection_protocol_format_sample_collect_summary", "crud_collection_protocol_format_storage_cert_sample_info", @@ -1890,20 +1873,19 @@ "crud_collection_protocol_validate_receipt_finance_submit_ready", "crud_collection_protocol_validate_sample_codes_not_used", "crud_collection_protocol_yyyymmdd_from_date_param", - "crud_dict_data_create_dict_data", - "crud_dict_data_get_dict_data", - "crud_dict_data_is_dict_value_valid", - "crud_dict_data_list_dict_data", - "crud_dict_data_list_dict_data_options", - "crud_dict_data_normalize_transfer_type", - "crud_dict_data_normalize_void_type", - "crud_dict_data_rationale_1", - "crud_dict_data_row_to_dict", - "crud_dict_data_soft_delete_dict_data", - "crud_dict_data_total_pages", - "crud_dict_data_update_dict_data", + "crud_ethnic_list_ethnics", + "crud_ethnic_rationale_1", + "crud_ethnic_row_to_dict", + "crud_exhibition_appointment_total_pages", "crud_inbound_sample_special_rationale_1", "crud_inbound_sample_special_update_inbound_sample_special_mark", + "crud_pilot_service_list_channel_agreements", + "crud_pilot_service_list_channel_invoices", + "crud_pilot_service_list_channel_mail_addresses", + "crud_pilot_service_list_checkup_institution_invoices", + "crud_pilot_service_row_to_dict_channel_invoice", + "crud_pilot_service_row_to_dict_channel_mail_address", + "crud_pilot_service_row_to_dict_checkup_institution_invoice", "crud_pre_transit_sample_apply_collection_keyword", "crud_pre_transit_sample_apply_collection_sample_collect_time_filter", "crud_pre_transit_sample_apply_create_time_filter", @@ -1928,6 +1910,7 @@ "crud_pre_transit_sample_sort_key_pre_delivery", "crud_pre_transit_sample_summarize_in_transit_items", "crud_pre_transit_sample_summarize_pre_delivery", + "crud_production_material_usage_mark_requisition_fully_used", "crud_protocol_sample_collection_apply_sample_status_filter", "crud_protocol_sample_collection_base_query", "crud_protocol_sample_collection_fmt_dt", @@ -1936,7 +1919,6 @@ "crud_protocol_sample_collection_row_to_dict", "crud_protocol_sample_collection_sample_status_label", "crud_protocol_sample_collection_total_pages", - "crud_research_donation_create_samples", "crud_research_donation_sample_collection_apply_sample_status_filter", "crud_research_donation_sample_collection_base_query", "crud_research_donation_sample_collection_fmt_dt", @@ -1969,10 +1951,12 @@ "services_protocol_payment_installment_rationale_70", "services_protocol_payment_installment_resolve_installment_due_amounts", "users_wuzilong_work_00code_zkxw_backend_app_api_collection_protocol_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_ethnic_py", "users_wuzilong_work_00code_zkxw_backend_app_api_pre_transit_sample_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_clinical_payment_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_research_donation_sample_collection_py", + "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_ethnic_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_pre_transit_sample_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", @@ -1989,233 +1973,6 @@ "utils_sample_special_validate_sample_special_raw" ], "4": [ - "core_utils_generate_uuid", - "crud_consumable_batch_stock_in", - "crud_consumable_batch_stock_out", - "crud_consumable_build_manual_out_remark", - "crud_consumable_consumable_code_exists", - "crud_consumable_create_consumable", - "crud_consumable_dec", - "crud_consumable_get_consumable", - "crud_consumable_is_enabled_status", - "crud_consumable_list_consumables", - "crud_consumable_norm_status", - "crud_consumable_rationale_1", - "crud_consumable_row_to_dict", - "crud_consumable_soft_delete_consumable", - "crud_consumable_stock_in", - "crud_consumable_stock_log_deduct_for_step", - "crud_consumable_stock_log_display_remark", - "crud_consumable_stock_log_list_stock_logs", - "crud_consumable_stock_log_parse_receiver_purpose_from_remark", - "crud_consumable_stock_log_rationale_1", - "crud_consumable_stock_log_rationale_164", - "crud_consumable_stock_log_rationale_216", - "crud_consumable_stock_log_resolve_receiver_purpose", - "crud_consumable_stock_log_revert_step_stock_changes", - "crud_consumable_stock_log_row_to_dict", - "crud_consumable_stock_log_user_nick_name_map", - "crud_consumable_stock_out", - "crud_consumable_total_pages", - "crud_consumable_update_consumable", - "crud_equipment_snapshot_join_equipment_ids", - "crud_equipment_snapshot_parse_equipment_ids", - "crud_equipment_snapshot_rationale_1", - "crud_equipment_snapshot_rationale_29", - "crud_equipment_snapshot_resolve_equipment_list_snapshot", - "crud_process_consumable_row_to_dict", - "crud_process_create_process", - "crud_process_create_sub_consumable", - "crud_process_create_sub_data_collection", - "crud_process_create_sub_output", - "crud_process_create_sub_reagent", - "crud_process_data_collection_row_to_dict", - "crud_process_get_process", - "crud_process_get_process_detail", - "crud_process_list_all_processes", - "crud_process_list_processes", - "crud_process_output_row_to_dict", - "crud_process_process_code_exists", - "crud_process_rationale_1", - "crud_process_rationale_277", - "crud_process_reagent_row_to_dict", - "crud_process_route_add_step", - "crud_process_route_copy_step", - "crud_process_route_create_route", - "crud_process_route_create_step_consumable", - "crud_process_route_create_step_data_collection", - "crud_process_route_create_step_output", - "crud_process_route_create_step_reagent", - "crud_process_route_get_route", - "crud_process_route_get_route_detail", - "crud_process_route_list_routes", - "crud_process_route_rationale_1", - "crud_process_route_rationale_463", - "crud_process_route_reorder_steps", - "crud_process_route_route_row_to_dict", - "crud_process_route_set_current_route", - "crud_process_route_soft_delete_route", - "crud_process_route_soft_delete_step", - "crud_process_route_soft_delete_sub_records", - "crud_process_route_step_consumable_row_to_dict", - "crud_process_route_step_data_collection_row_to_dict", - "crud_process_route_step_output_row_to_dict", - "crud_process_route_step_reagent_row_to_dict", - "crud_process_route_step_row_to_dict", - "crud_process_route_total_pages", - "crud_process_route_update_route", - "crud_process_route_update_step_consumables", - "crud_process_route_update_step_data_collections", - "crud_process_route_update_step_outputs", - "crud_process_route_update_step_reagents", - "crud_process_row_to_dict", - "crud_process_soft_delete_process", - "crud_process_soft_delete_sub_records", - "crud_process_sub_item_with_order", - "crud_process_total_pages", - "crud_process_update_process", - "crud_production_material_usage_deduct_step_usage_legacy_batch", - "crud_production_material_usage_rationale_773", - "crud_production_material_usage_rationale_878", - "crud_production_material_usage_register_step_usage_from_requisition", - "crud_production_task_add_task_step", - "crud_production_task_aggregate_production_tab_step_field", - "crud_production_task_assert_step_assignee_for_write", - "crud_production_task_assert_task_assignee", - "crud_production_task_assert_task_step_assignee_or_legacy", - "crud_production_task_base_active_step_count_query", - "crud_production_task_batch_load_step_sub_tables", - "crud_production_task_build_process_library_for_editor", - "crud_production_task_clone_route_to_task", - "crud_production_task_clone_step_consumables", - "crud_production_task_clone_step_data_collections", - "crud_production_task_clone_step_outputs", - "crud_production_task_clone_step_reagents", - "crud_production_task_consume_task_input_cell_products", - "crud_production_task_copy_task_step", - "crud_production_task_count_mine_production_work_order_tab_step_badges", - "crud_production_task_count_production_work_order_tab_step_badges", - "crud_production_task_count_step_tab_badges_by_tab", - "crud_production_task_create_production_task", - "crud_production_task_delete_production_task", - "crud_production_task_delete_task_step", - "crud_production_task_dispatch_task_steps", - "crud_production_task_empty_production_tab_step_counts", - "crud_production_task_empty_step_sub_tables", - "crud_production_task_enrich_handover_times", - "crud_production_task_enrich_outbound_task_items", - "crud_production_task_enrich_tasks_with_step_summaries", - "crud_production_task_fmt_dt", - "crud_production_task_forward_production_task", - "crud_production_task_generate_task_no", - "crud_production_task_get_production_task_detail", - "crud_production_task_get_production_task_row", - "crud_production_task_list_mine_production_tasks", - "crud_production_task_normalize_date_bound", - "crud_production_task_output_item_has_spec", - "crud_production_task_output_item_spec_text", - "crud_production_task_parse_optional_date", - "crud_production_task_rationale_1", - "crud_production_task_rationale_1104", - "crud_production_task_rationale_129", - "crud_production_task_rationale_1797", - "crud_production_task_rationale_1917", - "crud_production_task_rationale_2619", - "crud_production_task_rationale_2677", - "crud_production_task_rationale_2880", - "crud_production_task_rationale_3005", - "crud_production_task_rationale_3186", - "crud_production_task_rationale_460", - "crud_production_task_rationale_479", - "crud_production_task_rationale_579", - "crud_production_task_rationale_786", - "crud_production_task_reassign_production_task", - "crud_production_task_record_task_handover", - "crud_production_task_reorder_task_steps", - "crud_production_task_replace_step_configured_reagents", - "crud_production_task_replace_step_consumables", - "crud_production_task_replace_step_data_collections", - "crud_production_task_replace_step_outputs", - "crud_production_task_replace_step_reagents", - "crud_production_task_require_requisition_for_catalog_material", - "crud_production_task_resolve_production_tab_key", - "crud_production_task_resolve_sub_table_order_num", - "crud_production_task_set_task_inputs", - "crud_production_task_set_task_outputs", - "crud_production_task_soft_delete_sub", - "crud_production_task_step_assignee_active_users_in_tenant", - "crud_production_task_step_assignee_active_users_with_role_in_tenant", - "crud_production_task_step_assignee_enrich_step_assignees", - "crud_production_task_step_assignee_enrich_step_completed_by_names", - "crud_production_task_step_assignee_rationale_104", - "crud_production_task_step_assignee_rationale_152", - "crud_production_task_step_assignee_sync_assignees_for_step", - "crud_production_task_step_assignee_user_is_any_step_assignee_of_task", - "crud_production_task_step_assignee_user_is_step_assignee", - "crud_production_task_step_assignee_validate_assignee_user_ids", - "crud_production_task_step_configured_reagent_to_dict", - "crud_production_task_step_consumable_to_dict", - "crud_production_task_step_data_collection_to_dict", - "crud_production_task_step_output_to_dict", - "crud_production_task_step_reagent_to_dict", - "crud_production_task_step_sub_tables_to_dict", - "crud_production_task_step_to_dict", - "crud_production_task_task_input_to_dict", - "crud_production_task_task_output_to_dict", - "crud_production_task_total_pages", - "crud_production_task_update_product_from_output", - "crud_production_task_update_production_task", - "crud_production_task_update_task_status", - "crud_production_task_validate_assignee_user_id", - "crud_production_work_order_apply_exclude_inactive_protocol_filter", - "crud_production_work_order_rationale_54", - "crud_production_work_order_rationale_792", - "crud_production_work_order_sync_production_work_order_status_from_tasks", - "crud_reagent_batch_stock_in", - "crud_reagent_batch_stock_out", - "crud_reagent_create_reagent", - "crud_reagent_dec", - "crud_reagent_get_reagent", - "crud_reagent_is_enabled_status", - "crud_reagent_list_reagents", - "crud_reagent_norm_status", - "crud_reagent_reagent_code_exists", - "crud_reagent_row_to_dict", - "crud_reagent_soft_delete_reagent", - "crud_reagent_stock_in", - "crud_reagent_stock_log_deduct_for_step", - "crud_reagent_stock_log_rationale_216", - "crud_reagent_stock_out", - "crud_reagent_total_pages", - "crud_reagent_update_reagent", - "models_models_bizconsumablestocklog", - "models_models_bizprocessroute", - "models_models_bizprocessroutestep", - "models_models_bizproductiontaskstep", - "models_models_bizproductiontaskstepconsumable", - "models_models_bizproductiontaskstepdatacollection", - "models_models_bizproductiontaskstepoutput", - "models_models_bizproductiontaskstepreagent", - "models_models_bizreagentstocklog", - "models_models_rationale_2530", - "models_models_rationale_2552", - "models_models_rationale_2815", - "models_models_rationale_2867", - "models_models_rationale_2893", - "models_models_rationale_2944", - "models_models_rationale_2965", - "models_models_rationale_3109", - "models_models_rationale_3139", - "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_stock_log_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_equipment_snapshot_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_process_route_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_step_assignee_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py" - ], - "5": [ "core_db_collation_eq_unicode", "core_db_collation_like_unicode", "core_db_collation_rationale_1", @@ -2226,7 +1983,6 @@ "core_protocol_status_display_format_protocol_status_label", "core_protocol_status_display_resolve_void_type_label", "crud_cell_product_get_cell_product", - "crud_production_task_list_production_tasks", "crud_production_work_order_outbound_work_order_ids_by_keyword", "crud_production_work_order_rationale_378", "crud_qc_inspection_batch_allocate_batch_name", @@ -2296,6 +2052,24 @@ "crud_qc_task_task_to_dict", "crud_qc_task_task_work_order_context", "crud_qc_task_update_task_attachments", + "crud_qc_third_party_company_company_code_exists", + "crud_qc_third_party_company_create_company", + "crud_qc_third_party_company_get_company", + "crud_qc_third_party_company_list_companies", + "crud_qc_third_party_company_list_company_options", + "crud_qc_third_party_company_row_to_dict", + "crud_qc_third_party_company_soft_delete_company", + "crud_qc_third_party_company_update_company", + "crud_qc_third_party_item_company_name_map", + "crud_qc_third_party_item_create_item", + "crud_qc_third_party_item_dec", + "crud_qc_third_party_item_get_item", + "crud_qc_third_party_item_item_code_exists", + "crud_qc_third_party_item_list_active_items", + "crud_qc_third_party_item_list_items", + "crud_qc_third_party_item_row_to_dict", + "crud_qc_third_party_item_soft_delete_item", + "crud_qc_third_party_item_update_item", "crud_qc_work_order_accept_conclusion_label", "crud_qc_work_order_aggregate_qc_tab_counts", "crud_qc_work_order_apply_item_assignees", @@ -2316,6 +2090,7 @@ "crud_qc_work_order_effective_protocol_sample_id", "crud_qc_work_order_effective_reception_source", "crud_qc_work_order_empty_qc_tab_counts", + "crud_qc_work_order_enrich_outbound_work_orders", "crud_qc_work_order_enrich_production_work_order_refs", "crud_qc_work_order_enrich_protocol_sibling_samples", "crud_qc_work_order_enrich_unfinished_badge_counts", @@ -2374,6 +2149,7 @@ "crud_qc_work_order_rationale_2373", "crud_qc_work_order_rationale_2480", "crud_qc_work_order_rationale_2563", + "crud_qc_work_order_rationale_261", "crud_qc_work_order_rationale_2687", "crud_qc_work_order_rationale_2967", "crud_qc_work_order_rationale_3009", @@ -2408,40 +2184,262 @@ "crud_qc_work_order_validate_cell_product_id", "crud_qc_work_order_wo_to_dict", "crud_qc_work_order_work_order_qc_biz_type", - "models_models_bizqcworkorderlabitem", - "models_models_bizqcworkorderthirditem", - "models_models_rationale_1460", - "models_models_rationale_1483", - "services_qc_work_order_fee_summary_build_basic_experiment_fee_summaries", - "services_qc_work_order_fee_summary_build_basic_experiment_fee_summary", - "services_qc_work_order_fee_summary_build_protocol_payment_summaries", - "services_qc_work_order_fee_summary_build_protocol_payment_summary", - "services_qc_work_order_fee_summary_dec", - "services_qc_work_order_fee_summary_effective_collection_protocol_id", - "services_qc_work_order_fee_summary_enrich_work_order_fee_summaries", - "services_qc_work_order_fee_summary_fmt_ymd", - "services_qc_work_order_fee_summary_is_inbound_cell_storage_item", - "services_qc_work_order_fee_summary_is_outbound_fee_biz_type", - "services_qc_work_order_fee_summary_load_protocol_id_by_no", - "services_qc_work_order_fee_summary_load_reception_map", - "services_qc_work_order_fee_summary_payment_detail_row", - "services_qc_work_order_fee_summary_protocol_overall_status", - "services_qc_work_order_fee_summary_protocol_status_hint", - "services_qc_work_order_fee_summary_rationale_1", - "services_qc_work_order_fee_summary_received_amount_from_details", - "services_qc_work_order_fee_summary_sort_payment_details", + "models_models_bizqcbatchassignee", + "models_models_bizqcthirdpartycompany", + "models_models_rationale_1300", + "models_models_rationale_1441", "users_wuzilong_work_00code_zkxw_backend_app_core_db_collation_py", "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_inspection_batch_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_assignee_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py", - "users_wuzilong_work_00code_zkxw_backend_app_services_qc_work_order_fee_summary_py" + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py" + ], + "5": [ + "core_utils_generate_uuid", + "crud_consumable_batch_stock_in", + "crud_consumable_batch_stock_out", + "crud_consumable_build_manual_out_remark", + "crud_consumable_consumable_code_exists", + "crud_consumable_create_consumable", + "crud_consumable_dec", + "crud_consumable_get_consumable", + "crud_consumable_is_enabled_status", + "crud_consumable_list_consumables", + "crud_consumable_norm_status", + "crud_consumable_rationale_1", + "crud_consumable_row_to_dict", + "crud_consumable_soft_delete_consumable", + "crud_consumable_stock_in", + "crud_consumable_stock_log_deduct_for_step", + "crud_consumable_stock_log_display_remark", + "crud_consumable_stock_log_list_stock_logs", + "crud_consumable_stock_log_parse_receiver_purpose_from_remark", + "crud_consumable_stock_log_rationale_1", + "crud_consumable_stock_log_rationale_164", + "crud_consumable_stock_log_rationale_216", + "crud_consumable_stock_log_resolve_receiver_purpose", + "crud_consumable_stock_log_revert_step_stock_changes", + "crud_consumable_stock_log_row_to_dict", + "crud_consumable_stock_log_user_nick_name_map", + "crud_consumable_stock_out", + "crud_consumable_total_pages", + "crud_consumable_update_consumable", + "crud_equipment_snapshot_join_equipment_ids", + "crud_equipment_snapshot_parse_equipment_ids", + "crud_equipment_snapshot_rationale_1", + "crud_equipment_snapshot_rationale_29", + "crud_equipment_snapshot_resolve_equipment_list_snapshot", + "crud_process_route_add_step", + "crud_process_route_copy_step", + "crud_process_route_create_route", + "crud_process_route_create_step_consumable", + "crud_process_route_create_step_data_collection", + "crud_process_route_create_step_output", + "crud_process_route_create_step_reagent", + "crud_process_route_get_route", + "crud_process_route_get_route_detail", + "crud_process_route_list_routes", + "crud_process_route_rationale_1", + "crud_process_route_rationale_463", + "crud_process_route_reorder_steps", + "crud_process_route_route_row_to_dict", + "crud_process_route_set_current_route", + "crud_process_route_soft_delete_route", + "crud_process_route_soft_delete_step", + "crud_process_route_soft_delete_sub_records", + "crud_process_route_step_consumable_row_to_dict", + "crud_process_route_step_data_collection_row_to_dict", + "crud_process_route_step_output_row_to_dict", + "crud_process_route_step_reagent_row_to_dict", + "crud_process_route_step_row_to_dict", + "crud_process_route_total_pages", + "crud_process_route_update_route", + "crud_process_route_update_step_consumables", + "crud_process_route_update_step_data_collections", + "crud_process_route_update_step_outputs", + "crud_process_route_update_step_reagents", + "crud_production_task_add_task_step", + "crud_production_task_aggregate_production_tab_step_field", + "crud_production_task_assert_step_assignee_for_write", + "crud_production_task_assert_task_assignee", + "crud_production_task_assert_task_step_assignee_or_legacy", + "crud_production_task_base_active_step_count_query", + "crud_production_task_batch_load_step_sub_tables", + "crud_production_task_build_process_library_for_editor", + "crud_production_task_clone_route_to_task", + "crud_production_task_clone_step_consumables", + "crud_production_task_clone_step_data_collections", + "crud_production_task_clone_step_outputs", + "crud_production_task_clone_step_reagents", + "crud_production_task_consume_task_input_cell_products", + "crud_production_task_copy_task_step", + "crud_production_task_count_mine_production_work_order_tab_step_badges", + "crud_production_task_count_production_work_order_tab_step_badges", + "crud_production_task_count_step_tab_badges_by_tab", + "crud_production_task_create_production_task", + "crud_production_task_delete_production_task", + "crud_production_task_delete_task_step", + "crud_production_task_dispatch_task_steps", + "crud_production_task_empty_production_tab_step_counts", + "crud_production_task_empty_step_sub_tables", + "crud_production_task_enrich_assignee_names", + "crud_production_task_enrich_handover_times", + "crud_production_task_enrich_outbound_task_items", + "crud_production_task_enrich_tasks_with_step_summaries", + "crud_production_task_fmt_dt", + "crud_production_task_forward_production_task", + "crud_production_task_generate_task_no", + "crud_production_task_get_production_task_detail", + "crud_production_task_get_production_task_row", + "crud_production_task_list_mine_production_tasks", + "crud_production_task_list_production_tasks", + "crud_production_task_normalize_date_bound", + "crud_production_task_output_item_has_spec", + "crud_production_task_output_item_spec_text", + "crud_production_task_parse_optional_date", + "crud_production_task_production_conclusion_label", + "crud_production_task_rationale_1", + "crud_production_task_rationale_1104", + "crud_production_task_rationale_129", + "crud_production_task_rationale_1797", + "crud_production_task_rationale_1917", + "crud_production_task_rationale_2619", + "crud_production_task_rationale_2677", + "crud_production_task_rationale_2880", + "crud_production_task_rationale_3005", + "crud_production_task_rationale_3186", + "crud_production_task_rationale_460", + "crud_production_task_rationale_479", + "crud_production_task_rationale_579", + "crud_production_task_rationale_786", + "crud_production_task_reassign_production_task", + "crud_production_task_record_task_handover", + "crud_production_task_reorder_task_steps", + "crud_production_task_replace_step_configured_reagents", + "crud_production_task_replace_step_consumables", + "crud_production_task_replace_step_data_collections", + "crud_production_task_replace_step_outputs", + "crud_production_task_replace_step_reagents", + "crud_production_task_require_requisition_for_catalog_material", + "crud_production_task_resolve_production_tab_key", + "crud_production_task_resolve_sub_table_order_num", + "crud_production_task_set_task_inputs", + "crud_production_task_set_task_outputs", + "crud_production_task_soft_delete_sub", + "crud_production_task_step_assignee_active_users_in_tenant", + "crud_production_task_step_assignee_active_users_with_role_in_tenant", + "crud_production_task_step_assignee_enrich_step_assignees", + "crud_production_task_step_assignee_enrich_step_completed_by_names", + "crud_production_task_step_assignee_rationale_104", + "crud_production_task_step_assignee_rationale_152", + "crud_production_task_step_assignee_sync_assignees_for_step", + "crud_production_task_step_assignee_user_is_any_step_assignee_of_task", + "crud_production_task_step_assignee_user_is_step_assignee", + "crud_production_task_step_assignee_validate_assignee_user_ids", + "crud_production_task_step_configured_reagent_to_dict", + "crud_production_task_step_consumable_to_dict", + "crud_production_task_step_data_collection_to_dict", + "crud_production_task_step_output_to_dict", + "crud_production_task_step_reagent_to_dict", + "crud_production_task_step_sub_tables_to_dict", + "crud_production_task_step_to_dict", + "crud_production_task_task_input_to_dict", + "crud_production_task_task_output_to_dict", + "crud_production_task_task_to_dict", + "crud_production_task_total_pages", + "crud_production_task_update_product_from_output", + "crud_production_task_update_production_task", + "crud_production_task_update_task_status", + "crud_production_task_validate_assignee_user_id", + "crud_production_work_order_apply_exclude_inactive_protocol_filter", + "crud_production_work_order_rationale_54", + "crud_production_work_order_rationale_792", + "crud_production_work_order_sync_production_work_order_status_from_tasks", + "crud_reagent_batch_stock_in", + "crud_reagent_batch_stock_out", + "crud_reagent_create_reagent", + "crud_reagent_dec", + "crud_reagent_get_reagent", + "crud_reagent_is_enabled_status", + "crud_reagent_list_reagents", + "crud_reagent_norm_status", + "crud_reagent_reagent_code_exists", + "crud_reagent_row_to_dict", + "crud_reagent_soft_delete_reagent", + "crud_reagent_stock_in", + "crud_reagent_stock_log_deduct_for_step", + "crud_reagent_stock_log_display_remark", + "crud_reagent_stock_log_list_stock_logs", + "crud_reagent_stock_log_parse_receiver_purpose_from_remark", + "crud_reagent_stock_log_rationale_1", + "crud_reagent_stock_log_rationale_164", + "crud_reagent_stock_log_rationale_216", + "crud_reagent_stock_log_resolve_receiver_purpose", + "crud_reagent_stock_log_revert_step_stock_changes", + "crud_reagent_stock_log_row_to_dict", + "crud_reagent_stock_log_user_nick_name_map", + "crud_reagent_stock_out", + "crud_reagent_total_pages", + "crud_reagent_update_reagent", + "models_models_bizconsumablestocklog", + "models_models_bizprocessroute", + "models_models_bizprocessroutestep", + "models_models_bizproductiontaskstep", + "models_models_bizproductiontaskstepconsumable", + "models_models_bizproductiontaskstepdatacollection", + "models_models_bizproductiontaskstepoutput", + "models_models_bizproductiontaskstepreagent", + "models_models_bizreagentstocklog", + "models_models_rationale_2530", + "models_models_rationale_2552", + "models_models_rationale_2815", + "models_models_rationale_2867", + "models_models_rationale_2893", + "models_models_rationale_2944", + "models_models_rationale_2965", + "models_models_rationale_3109", + "models_models_rationale_3139", + "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_stock_log_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_equipment_snapshot_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_process_route_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_step_assignee_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_stock_log_py" ], "6": [ + "api_leave_delete_leave", + "api_leave_get_leave", + "api_leave_leave_local_callback", + "api_leave_leave_workflow_callback", + "api_leave_list_leaves", + "api_leave_submit_leave", + "api_leave_update_leave", "api_operations_list_access_logs", "api_operations_list_uv_disinfect_logs", + "api_workflow_business_type_label", + "api_workflow_enrich_task_list", + "api_workflow_get_business_all_tasks", + "api_workflow_get_business_form_fields", + "api_workflow_get_designer_data", + "api_workflow_get_instance_detail", + "api_workflow_leave_form_fields", + "api_workflow_list_completed_tasks", + "api_workflow_list_my_instances", + "api_workflow_list_pending_tasks", + "api_workflow_list_process_defs", + "api_workflow_processdefcreatebody", + "api_workflow_processdefupdatebody", + "api_workflow_publishversionbody", + "api_workflow_rationale_135", + "api_workflow_start_instance", + "api_workflow_startinstancebody", + "api_workflow_taskactionbody", "crud_api_request_log_apirequestlogcrud", "crud_api_request_log_delete", "crud_api_request_log_get", @@ -2468,11 +2466,135 @@ "crud_clean_room_update_clean_room", "crud_clean_room_update_uv_disinfect_log", "crud_clean_room_uv_disinfect_log_to_dict", + "crud_express_company_create_express_company", + "crud_express_company_express_code_exists", + "crud_express_company_get_express_company", + "crud_express_company_list_express_companies", + "crud_express_company_rationale_1", + "crud_express_company_row_to_dict", + "crud_express_company_soft_delete_express_company", + "crud_express_company_total_pages", + "crud_express_company_update_express_company", + "crud_leave_get_leave", + "crud_leave_list_leaves", + "crud_leave_row_to_dict", + "crud_leave_soft_delete_leave", + "crud_leave_total_pages", + "crud_leave_update_leave", + "crud_leave_update_leave_status", "crud_material_stock_log_dec", "crud_material_stock_log_fmt_dt", "crud_material_stock_log_list_stock_logs", "crud_material_stock_log_row_to_dict", "crud_material_stock_log_user_nick_name_map", + "crud_material_usage_amount_for_row", + "crud_material_usage_batch_map", + "crud_material_usage_display_remark", + "crud_material_usage_fmt_date_val", + "crud_material_usage_list_stock_check_requisitions", + "crud_material_usage_list_usages", + "crud_material_usage_list_usages_query", + "crud_material_usage_mark_requisition_fully_used", + "crud_material_usage_paginate_usages", + "crud_material_usage_parse_receiver_purpose_from_remark", + "crud_material_usage_rationale_302", + "crud_material_usage_receiver_display_map", + "crud_material_usage_resolve_receiver_purpose", + "crud_material_usage_row_to_dict", + "crud_material_usage_stock_in_date_for_row", + "crud_material_usage_unit_price_for_row", + "crud_material_usage_usage_unit_label", + "crud_material_usage_user_nick_name_map", + "crud_qc_task_result_list_results_by_task", + "crud_qc_task_result_list_saved_results_by_task", + "crud_qc_task_result_merge_saved_into_template", + "crud_qc_task_result_rationale_103", + "crud_qc_task_result_rationale_43", + "crud_qc_task_result_resolve_task_item_ref", + "crud_qc_task_result_row_to_dict", + "crud_qc_task_result_save_results_for_task", + "crud_site_create_site", + "crud_site_get_site", + "crud_site_list_sites", + "crud_site_row_to_dict", + "crud_site_site_code_exists", + "crud_site_soft_delete_site", + "crud_site_total_pages", + "crud_site_update_site", + "crud_tenant_create_tenant", + "crud_tenant_get_tenant", + "crud_tenant_list_tenants", + "crud_tenant_row_to_dict", + "crud_tenant_soft_delete_tenant", + "crud_tenant_tenant_no_exists", + "crud_tenant_total_pages", + "crud_tenant_update_tenant", + "crud_workflow_create_instance", + "crud_workflow_create_process_def", + "crud_workflow_get_all_tasks_for_business", + "crud_workflow_get_instance", + "crud_workflow_get_latest_version", + "crud_workflow_get_nodes_by_version", + "crud_workflow_get_pending_tasks_by_node", + "crud_workflow_get_process_def", + "crud_workflow_get_task", + "crud_workflow_get_transitions_by_version", + "crud_workflow_list_completed_tasks", + "crud_workflow_list_my_instances", + "crud_workflow_list_pending_tasks", + "crud_workflow_list_process_defs", + "crud_workflow_list_versions", + "crud_workflow_process_code_exists", + "crud_workflow_rationale_1", + "crud_workflow_row_to_dict", + "crud_workflow_soft_delete_process_def", + "crud_workflow_task_row_to_dict", + "crud_workflow_total_pages", + "crud_workflow_update_instance_status", + "crud_workflow_update_process_def", + "crud_workflow_version_to_dict", + "models_models_rationale_686", + "models_models_wfprocessinstance", + "services_workflow_callback_dispatch_local", + "services_workflow_callback_rationale_1", + "services_workflow_callback_rationale_24", + "services_workflow_callback_rationale_29", + "services_workflow_callback_rationale_61", + "services_workflow_callback_register_local_callback", + "services_workflow_callback_trigger_callback", + "services_workflow_engine_compare", + "services_workflow_engine_get_variable", + "services_workflow_engine_parse_node_config", + "services_workflow_engine_parse_variables", + "services_workflow_engine_rationale_1", + "services_workflow_engine_workflowengine", + "services_workflow_engine_workflowengine_advance", + "services_workflow_engine_workflowengine_approve_task", + "services_workflow_engine_workflowengine_check_rules", + "services_workflow_engine_workflowengine_evaluate_condition", + "services_workflow_engine_workflowengine_execute_node", + "services_workflow_engine_workflowengine_init", + "services_workflow_engine_workflowengine_reject_task", + "services_workflow_engine_workflowengine_resolve_approvers", + "services_workflow_engine_workflowengine_start_process", + "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", + "users_wuzilong_work_00code_zkxw_backend_app_api_workflow_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_api_request_log_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_clean_room_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_material_usage_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_workflow_py", + "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", + "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py" + ], + "7": [ + "api_pilot_service_get_channel_service_order_detail", + "api_pilot_service_list_service_order_txns", "crud_pilot_service_activate_channel_agreement", "crud_pilot_service_apply_gmcp_order_quotas", "crud_pilot_service_apply_purchase_txn_holdings", @@ -2503,6 +2625,7 @@ "crud_pilot_service_create_recharge_txn", "crud_pilot_service_create_refund_txn", "crud_pilot_service_create_unsubscribe_txn", + "crud_pilot_service_enrich_finance_operate_fields", "crud_pilot_service_enrich_txn_products_from_order", "crud_pilot_service_get_cell_product_price", "crud_pilot_service_get_cell_product_spec", @@ -2525,6 +2648,7 @@ "crud_pilot_service_list_cell_product_prices", "crud_pilot_service_list_cell_product_specs", "crud_pilot_service_list_cell_product_types", + "crud_pilot_service_list_channel_agreement_prices", "crud_pilot_service_list_channel_product_quotas", "crud_pilot_service_list_channel_service_orders", "crud_pilot_service_list_channels", @@ -2532,6 +2656,7 @@ "crud_pilot_service_list_checkup_institution_projects", "crud_pilot_service_list_checkup_institutions", "crud_pilot_service_list_package_items_raw", + "crud_pilot_service_list_project_system_items", "crud_pilot_service_list_project_systems", "crud_pilot_service_list_service_order_txns", "crud_pilot_service_normalize_date_bound", @@ -2547,6 +2672,8 @@ "crud_pilot_service_rationale_2584", "crud_pilot_service_rationale_2720", "crud_pilot_service_rationale_2746", + "crud_pilot_service_rationale_2835", + "crud_pilot_service_rationale_2874", "crud_pilot_service_rationale_3021", "crud_pilot_service_rationale_3126", "crud_pilot_service_rationale_3249", @@ -2575,14 +2702,17 @@ "crud_pilot_service_row_to_dict_cell_product_type", "crud_pilot_service_row_to_dict_channel", "crud_pilot_service_row_to_dict_channel_account", + "crud_pilot_service_row_to_dict_channel_agreement_price", "crud_pilot_service_row_to_dict_channel_product_quota", "crud_pilot_service_row_to_dict_checkup_institution", "crud_pilot_service_row_to_dict_checkup_institution_package", "crud_pilot_service_row_to_dict_checkup_institution_package_item", "crud_pilot_service_row_to_dict_checkup_institution_project", "crud_pilot_service_row_to_dict_project_system", + "crud_pilot_service_row_to_dict_project_system_item", "crud_pilot_service_row_to_dict_service_order_product", "crud_pilot_service_save_gmcp_product_rows", + "crud_pilot_service_service_order_txn_to_response_dict", "crud_pilot_service_soft_delete_cell_product_price", "crud_pilot_service_soft_delete_cell_product_spec", "crud_pilot_service_soft_delete_cell_product_type", @@ -2625,35 +2755,21 @@ "crud_pilot_service_void_channel_agreement", "crud_pilot_service_void_service_order", "crud_pilot_service_void_txn", - "crud_post_create_post", - "crud_post_list_posts", - "crud_post_post_code_exists", - "crud_post_row_to_dict", - "crud_post_total_pages", - "crud_post_update_post", - "models_models_bizcellproductprice", "models_models_bizcellproductprojectsystem", "models_models_bizcellproductspec", "models_models_bizchannelagreementproductprice", "models_models_bizchannelproductquota", "models_models_bizchannelserviceorderproduct", "models_models_bizcheckupinstitutionpackageitem", - "models_models_bizcleanroomuvdisinfectlog", - "models_models_rationale_1615", "models_models_rationale_1756", - "models_models_rationale_1775", "models_models_rationale_1800", "models_models_rationale_1896", "models_models_rationale_1985", "models_models_rationale_2057", "models_models_rationale_2210", - "users_wuzilong_work_00code_zkxw_backend_app_crud_api_request_log_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_clean_room_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_service_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py" + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_service_py" ], - "7": [ + "8": [ "crud_material_stock_check_batch_line_to_dict", "crud_material_stock_check_cancel_check", "crud_material_stock_check_check_header_to_dict", @@ -2670,23 +2786,10 @@ "crud_material_stock_check_unused_amount", "crud_material_stock_check_unused_line_to_dict", "crud_material_stock_check_user_nick_name_map", - "crud_production_material_batch_stock_in", - "crud_production_material_batch_stock_out", - "crud_production_material_build_manual_out_remark", - "crud_production_material_code_exists", - "crud_production_material_create_material", - "crud_production_material_dec", - "crud_production_material_fmt_dt", "crud_production_material_formula_get_configured_material", "crud_production_material_formula_get_formula", "crud_production_material_formula_line_to_dict", "crud_production_material_formula_replace_formula", - "crud_production_material_get_material", - "crud_production_material_is_enabled_status", - "crud_production_material_list_materials", - "crud_production_material_norm_material_type", - "crud_production_material_norm_status", - "crud_production_material_options_list", "crud_production_material_prep_batch_map_for_prep_lines", "crud_production_material_prep_cancel_prep", "crud_production_material_prep_complete_prep", @@ -2715,11 +2818,6 @@ "crud_production_material_prep_validate_requisition", "crud_production_material_prep_write_prep_consume_usage", "crud_production_material_prep_write_quick_prep_consume_usage", - "crud_production_material_rationale_26", - "crud_production_material_rationale_381", - "crud_production_material_rationale_530", - "crud_production_material_row_to_dict", - "crud_production_material_soft_delete_material", "crud_production_material_stock_batch_batch_discard", "crud_production_material_stock_batch_batch_options", "crud_production_material_stock_batch_batch_row_to_dict", @@ -2762,10 +2860,6 @@ "crud_production_material_stock_check_unused_amount", "crud_production_material_stock_check_unused_line_to_dict", "crud_production_material_stock_check_user_nick_name_map", - "crud_production_material_stock_in", - "crud_production_material_stock_out", - "crud_production_material_total_pages", - "crud_production_material_update_material", "crud_qc_material_build_manual_out_remark", "crud_qc_material_code_exists", "crud_qc_material_create_material", @@ -2780,19 +2874,14 @@ "crud_qc_material_row_to_dict", "crud_qc_material_soft_delete_material", "crud_qc_material_stock_batch_append_batch_qty_adjust", - "crud_qc_material_stock_batch_batch_discard", - "crud_qc_material_stock_batch_batch_options", - "crud_qc_material_stock_batch_batch_row_to_dict", "crud_qc_material_stock_batch_batch_stock_in", "crud_qc_material_stock_batch_batch_stock_out", "crud_qc_material_stock_batch_create_batch_and_usage", "crud_qc_material_stock_batch_delete_batch", "crud_qc_material_stock_batch_discard_batch", - "crud_qc_material_stock_batch_fmt_date", "crud_qc_material_stock_batch_get_batch", "crud_qc_material_stock_batch_get_batch_detail", "crud_qc_material_stock_batch_get_material_for_update", - "crud_qc_material_stock_batch_list_batches", "crud_qc_material_stock_batch_parse_date", "crud_qc_material_stock_batch_parse_expire_date", "crud_qc_material_stock_batch_require_decimal", @@ -2808,10 +2897,12 @@ "crud_qc_material_stock_check_cancel_check", "crud_qc_material_stock_check_check_header_to_dict", "crud_qc_material_stock_check_complete_check", + "crud_qc_material_stock_check_create_check", "crud_qc_material_stock_check_get_check", "crud_qc_material_stock_check_get_check_detail", "crud_qc_material_stock_check_line_counts", "crud_qc_material_stock_check_list_checks", + "crud_qc_material_stock_check_parse_check_time", "crud_qc_material_stock_check_parse_optional_date", "crud_qc_material_stock_check_rationale_363", "crud_qc_material_stock_check_resolve_unused_item_fields", @@ -2834,40 +2925,45 @@ "models_production_material_bizproductionmaterialstockcheck", "models_production_material_bizproductionmaterialstockcheckbatchline", "models_production_material_bizproductionmaterialstockcheckunusedline", - "models_production_material_bizproductionmaterialusage", + "models_qc_material_bizqcmaterial", + "models_qc_material_bizqcmaterialstockbatch", + "models_qc_material_bizqcmaterialstockcheck", + "models_qc_material_bizqcmaterialstockcheckbatchline", + "models_qc_material_bizqcmaterialstockcheckunusedline", "models_qc_material_bizqcmaterialusage", "services_protocol_pay_mode_switch_dec", "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_check_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_formula_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_prep_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_stock_batch_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_stock_check_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_stock_batch_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_stock_check_py", - "users_wuzilong_work_00code_zkxw_backend_app_models_production_material_py" + "users_wuzilong_work_00code_zkxw_backend_app_models_production_material_py", + "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py" ], - "8": [ - "api_outbound_release_review_batch_review", - "api_outbound_release_review_get_current_user_id", - "api_outbound_release_review_get_outbound_release_materials", - "api_outbound_release_review_get_pilot_release_review_detail", - "api_outbound_release_review_get_tenant_no", - "api_outbound_release_review_list_pilot_release_reviews", - "api_outbound_release_review_save_outbound_release_materials", - "api_outbound_release_review_submit_single_review", + "9": [ + "api_admin_get_role_data_scope", + "api_admin_get_role_menus", + "api_admin_list_role_management", + "api_pilot_checkup_api_get_checkup_detail", + "api_pilot_checkup_api_list_actual_items", + "api_pilot_checkup_api_list_checkups", + "api_pilot_checkup_api_list_pending_patients", + "api_pilot_checkup_api_list_reserve_items", + "api_pilot_checkup_batchcheckupsavebody", + "api_pilot_checkup_checkupitembody", + "api_pilot_checkup_checkupitemssavebody", + "api_pilot_checkup_checkupsavebody", + "api_pilot_checkup_idbody", + "api_pilot_checkup_rationale_1", + "api_pilot_delivery_get_by_schedule", "api_pilot_delivery_get_method", "api_pilot_delivery_list_by_application", - "api_pilot_infusion_schedule_mgmt_api_detail", - "api_pilot_infusion_schedule_mgmt_api_list", - "api_pilot_infusion_schedule_mgmt_productitembody", - "api_pilot_infusion_schedule_mgmt_updateqcstatusbody", - "api_pilot_infusion_schedule_mgmt_updateschedulebody", - "api_pilot_infusion_schedule_mgmt_updatestatusbody", "crud_base_crudbase_update", - "crud_clinical_payment_map_payments_by_schedule_ids", - "crud_clinical_payment_rationale_143", + "crud_collection_protocol_get_protocol_nos_used_in_protocols", + "crud_collection_protocol_rationale_75", "crud_dict_type_create_dict_type", "crud_dict_type_dict_type_code_exists", "crud_dict_type_get_dict_type", @@ -2906,21 +3002,6 @@ "crud_outbound_release_material_save_outbound_material", "crud_outbound_release_material_soft_delete_outbound_cells_not_in", "crud_outbound_release_material_soft_delete_outbound_qc_materials_not_in", - "crud_outbound_release_review_batch_review", - "crud_outbound_release_review_dec", - "crud_outbound_release_review_fmt_dt", - "crud_outbound_release_review_get_schedule_detail", - "crud_outbound_release_review_get_user_name", - "crud_outbound_release_review_list_reviews_paginated", - "crud_outbound_release_review_rationale_139", - "crud_outbound_release_review_rationale_513", - "crud_outbound_release_review_rationale_596", - "crud_outbound_release_review_rationale_81", - "crud_outbound_release_review_rationale_94", - "crud_outbound_release_review_resolve_schedule_biz_type", - "crud_outbound_release_review_review_schedule", - "crud_outbound_release_review_row_to_dict", - "crud_outbound_release_review_total_pages", "crud_pilot_checkup_batch_create_checkups", "crud_pilot_checkup_create_checkup", "crud_pilot_checkup_delete_actual_item", @@ -2965,15 +3046,142 @@ "crud_pilot_delivery_row_to_dict_delivery_method", "crud_pilot_delivery_save_delivery_materials", "crud_pilot_delivery_soft_delete_delivery", - "crud_pilot_infusion_confirm_confirm_infusion", - "crud_pilot_infusion_confirm_create_infusion_confirm", - "crud_pilot_infusion_confirm_delete_infusion_confirm", - "crud_pilot_infusion_confirm_get_confirm_by_id", - "crud_pilot_infusion_confirm_get_confirm_by_schedule", - "crud_pilot_infusion_confirm_list_confirms_by_application", - "crud_pilot_infusion_confirm_rationale_113", - "crud_pilot_infusion_confirm_row_to_dict", - "crud_pilot_infusion_confirm_update_infusion_confirm", + "crud_qc_item_param_list_params_by_item", + "crud_qc_item_param_parse_options_list", + "crud_qc_item_param_row_to_dict", + "crud_qc_item_param_save_params_for_item", + "crud_qc_item_param_validate_param", + "crud_qc_material_amount_auth_assert_user_in_auth_dept", + "crud_qc_material_amount_auth_get_amount_view_role", + "crud_qc_material_amount_auth_get_auth_dept_id", + "crud_qc_material_amount_auth_grant_amount_view_role", + "crud_qc_material_amount_auth_list_authorized_users", + "crud_qc_material_amount_auth_rationale_1", + "crud_qc_material_amount_auth_rationale_159", + "crud_qc_material_amount_auth_rationale_207", + "crud_qc_material_amount_auth_revoke_amount_view_role", + "crud_qc_material_amount_auth_row_to_dict", + "crud_qc_material_amount_auth_user_has_role_binding", + "crud_role_create_role", + "crud_role_get_role", + "crud_role_get_role_data_scope", + "crud_role_get_role_menu_ids", + "crud_role_list_roles", + "crud_role_rationale_1", + "crud_role_role_name_exists", + "crud_role_row_to_dict", + "crud_role_soft_delete_role", + "crud_role_total_pages", + "crud_role_update_role", + "crud_role_update_role_data_scope", + "models_models_bizpilotcheckup", + "models_models_bizpilotcheckupactualitem", + "models_models_rationale_107", + "models_models_rationale_3309", + "models_models_rationale_3358", + "models_models_sysroledatascopedetail", + "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_checkup_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_handover_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_release_material_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_checkup_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_delivery_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_amount_auth_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py" + ], + "10": [ + "api_admin_dict_data_options", + "api_pilot_application_api_save_application", + "api_pilot_infusion_schedule_mgmt_api_detail", + "api_pilot_infusion_schedule_mgmt_api_list", + "api_pilot_infusion_schedule_mgmt_productitembody", + "api_pilot_infusion_schedule_mgmt_updateqcstatusbody", + "api_pilot_infusion_schedule_mgmt_updateschedulebody", + "api_pilot_infusion_schedule_mgmt_updatestatusbody", + "crud_clinical_payment_apply_submit_receipt", + "crud_clinical_payment_auto_create_payment", + "crud_clinical_payment_batch_submit_receipt", + "crud_clinical_payment_batch_submit_refund", + "crud_clinical_payment_confirm_receipt", + "crud_clinical_payment_confirm_refund", + "crud_clinical_payment_enrich_payment", + "crud_clinical_payment_get_or_raise", + "crud_clinical_payment_get_payment_by_schedule", + "crud_clinical_payment_get_payment_detail", + "crud_clinical_payment_map_payments_by_schedule_id", + "crud_clinical_payment_map_payments_by_schedule_ids", + "crud_clinical_payment_rationale_143", + "crud_clinical_payment_rationale_173", + "crud_clinical_payment_rationale_74", + "crud_clinical_payment_reject_receipt", + "crud_clinical_payment_reject_refund", + "crud_clinical_payment_submit_receipt", + "crud_clinical_payment_submit_refund", + "crud_dict_data_create_dict_data", + "crud_dict_data_get_dict_data", + "crud_dict_data_is_dict_value_valid", + "crud_dict_data_list_dict_data", + "crud_dict_data_list_dict_data_options", + "crud_dict_data_normalize_transfer_type", + "crud_dict_data_normalize_void_type", + "crud_dict_data_rationale_1", + "crud_dict_data_row_to_dict", + "crud_dict_data_soft_delete_dict_data", + "crud_dict_data_total_pages", + "crud_dict_data_update_dict_data", + "crud_pilot_application_auto_generate_schedules", + "crud_pilot_application_complete_application", + "crud_pilot_application_create_application", + "crud_pilot_application_create_basic_experiment_sale_schedules", + "crud_pilot_application_create_infusion_plan", + "crud_pilot_application_create_schedule", + "crud_pilot_application_create_schedule_products", + "crud_pilot_application_format_yyyy_mm_dd", + "crud_pilot_application_generate_application_no", + "crud_pilot_application_get_application", + "crud_pilot_application_get_or_create_infusion_plan", + "crud_pilot_application_get_patient_by_application", + "crud_pilot_application_get_schedule_for_plan", + "crud_pilot_application_list_applications", + "crud_pilot_application_list_infusion_plans", + "crud_pilot_application_list_schedules_by_plan", + "crud_pilot_application_mark_schedule_complete", + "crud_pilot_application_normalize_infusion_status_code", + "crud_pilot_application_normalize_yyyymmdd", + "crud_pilot_application_parse_infusion_datetime", + "crud_pilot_application_prepare_infusion_plan_payload", + "crud_pilot_application_rationale_1", + "crud_pilot_application_rationale_104", + "crud_pilot_application_rationale_1476", + "crud_pilot_application_rationale_1577", + "crud_pilot_application_rationale_1623", + "crud_pilot_application_rationale_69", + "crud_pilot_application_release_application_no_for_soft_delete", + "crud_pilot_application_resolve_application_attachment_payload", + "crud_pilot_application_row_to_dict_application", + "crud_pilot_application_row_to_dict_infusion_plan", + "crud_pilot_application_row_to_dict_infusion_schedule", + "crud_pilot_application_row_to_dict_patient", + "crud_pilot_application_row_to_dict_schedule_product", + "crud_pilot_application_save_application_infusion", + "crud_pilot_application_save_patient", + "crud_pilot_application_schedule_deletable", + "crud_pilot_application_schedule_has_blocking_links", + "crud_pilot_application_schedule_infusion_editable", + "crud_pilot_application_schedule_locked", + "crud_pilot_application_soft_delete_application", + "crud_pilot_application_soft_delete_infusion_plan", + "crud_pilot_application_soft_delete_schedule", + "crud_pilot_application_start_application", + "crud_pilot_application_update_application", + "crud_pilot_application_update_infusion_plan", + "crud_pilot_application_update_schedule", + "crud_pilot_application_update_schedule_editable", + "crud_pilot_application_update_schedule_order_only", + "crud_pilot_application_upsert_application_infusion", + "crud_pilot_application_upsert_schedule_products", + "crud_pilot_application_void_application", "crud_pilot_infusion_schedule_mgmt_create_settlement_txn", "crud_pilot_infusion_schedule_mgmt_deduct_fee_on_complete", "crud_pilot_infusion_schedule_mgmt_find_existing_settlement_txn", @@ -2995,27 +3203,38 @@ "crud_pilot_infusion_schedule_mgmt_update_infusion_schedule_mgmt", "crud_pilot_infusion_schedule_mgmt_update_infusion_status", "crud_pilot_infusion_schedule_mgmt_update_qc_status", - "crud_qc_work_order_enrich_outbound_work_orders", - "crud_qc_work_order_rationale_261", - "crud_storage_facility_clear_slots_by_facility_node", - "models_models_bizpilotcheckup", - "models_models_bizpilotcheckupactualitem", - "models_models_bizpilotcheckupreserveitem", - "models_models_rationale_3309", - "models_models_rationale_3338", - "models_models_rationale_3358", - "users_wuzilong_work_00code_zkxw_backend_app_api_outbound_release_review_py", + "crud_pilot_outbound_status_sync_get_schedule", + "crud_pilot_outbound_status_sync_is_pilot_outbound_production", + "crud_pilot_outbound_status_sync_is_pilot_outbound_qc", + "crud_pilot_outbound_status_sync_rationale_1", + "crud_pilot_outbound_status_sync_rationale_131", + "crud_pilot_outbound_status_sync_rationale_174", + "crud_pilot_outbound_status_sync_rationale_64", + "crud_pilot_outbound_status_sync_rationale_96", + "crud_pilot_outbound_status_sync_sync_pilot_outbound_from_schedule", + "crud_pilot_outbound_status_sync_sync_production_work_order_from_schedule", + "crud_pilot_outbound_status_sync_sync_qc_work_order_from_schedule", + "crud_pilot_outbound_status_sync_sync_schedule_from_production_work_order", + "crud_pilot_outbound_status_sync_sync_schedule_from_qc_work_order", + "crud_pilot_outbound_status_sync_touch", + "crud_qc_work_order_create_outbound_qc_work_order", + "crud_qc_work_order_rationale_99", + "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", + "models_clinical_payment_bizpilotpayment", + "models_clinical_payment_rationale_8", + "models_models_bizpilotinfusionschedule", + "models_models_bizpilotinfusionscheduleproduct", + "models_models_rationale_3253", + "models_models_rationale_3282", "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_infusion_schedule_mgmt_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_handover_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_release_material_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_release_review_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_checkup_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_delivery_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_infusion_confirm_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_infusion_schedule_mgmt_py" + "users_wuzilong_work_00code_zkxw_backend_app_crud_clinical_payment_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_application_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_infusion_schedule_mgmt_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_outbound_status_sync_py", + "users_wuzilong_work_00code_zkxw_backend_app_models_clinical_payment_py" ], - "9": [ + "11": [ "api_sample_production_reception_body_to_payload", "api_sample_production_reception_get_current_user_id", "api_sample_production_reception_get_production_reception_by_sample_code", @@ -3025,27 +3244,9 @@ "api_sample_production_reception_productionreceptionbody", "api_sample_production_reception_put_production_reception", "api_sample_production_reception_resolve_reception_id", + "crud_collection_protocol_format_attachment_file_size", "crud_collection_protocol_rationale_304", "crud_collection_protocol_urls_to_attachment_list", - "crud_qc_sms_notification_apply_qc_status_filter", - "crud_qc_sms_notification_base_query", - "crud_qc_sms_notification_derive_qc_conclusion", - "crud_qc_sms_notification_ensure_notification", - "crud_qc_sms_notification_eq_ci", - "crud_qc_sms_notification_fetch_completed_tasks", - "crud_qc_sms_notification_fmt_dt", - "crud_qc_sms_notification_generate_sms_content", - "crud_qc_sms_notification_list_notifications", - "crud_qc_sms_notification_normalize_date_bound", - "crud_qc_sms_notification_qc_complete_time", - "crud_qc_sms_notification_qc_status_label", - "crud_qc_sms_notification_rationale_32", - "crud_qc_sms_notification_resolve_notification", - "crud_qc_sms_notification_row_to_dict", - "crud_qc_sms_notification_task_stats_subquery", - "crud_qc_sms_notification_toggle_notification_status", - "crud_qc_sms_notification_total_pages", - "crud_qc_sms_notification_unicode_ci", "crud_sample_production_reception_apply_payload_to_row", "crud_sample_production_reception_create_production_reception", "crud_sample_production_reception_dec", @@ -3156,7 +3357,6 @@ "models_models_bizstorageentrysmsnotification", "models_models_rationale_1271", "users_wuzilong_work_00code_zkxw_backend_app_api_sample_production_reception_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_sms_notification_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_production_reception_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_result_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_lab_code_py", @@ -3164,167 +3364,28 @@ "users_wuzilong_work_00code_zkxw_backend_app_crud_sop_document_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_entry_sms_notification_py" ], - "10": [ - "api_ethnic_list_ethnics_for_select", - "core_data_scope_apply_data_scope", - "core_data_scope_get_child_dept_ids", - "core_data_scope_get_user_dept_id", - "core_data_scope_rationale_1", - "core_data_scope_rationale_113", - "core_data_scope_rationale_28", - "core_data_scope_rationale_38", - "core_data_scope_rationale_65", - "core_data_scope_resolve_user_role_scopes", - "crud_ethnic_list_ethnics", - "crud_ethnic_rationale_1", - "crud_ethnic_row_to_dict", - "crud_material_usage_amount_for_row", - "crud_material_usage_batch_map", - "crud_material_usage_display_remark", - "crud_material_usage_fmt_date_val", - "crud_material_usage_list_stock_check_requisitions", - "crud_material_usage_list_usages", - "crud_material_usage_list_usages_query", - "crud_material_usage_mark_requisition_fully_used", - "crud_material_usage_paginate_usages", - "crud_material_usage_parse_receiver_purpose_from_remark", - "crud_material_usage_rationale_302", - "crud_material_usage_receiver_display_map", - "crud_material_usage_resolve_receiver_purpose", - "crud_material_usage_row_to_dict", - "crud_material_usage_stock_in_date_for_row", - "crud_material_usage_unit_price_for_row", - "crud_material_usage_usage_unit_label", - "crud_material_usage_user_nick_name_map", - "crud_pilot_service_list_channel_agreement_prices", - "crud_pilot_service_list_channel_agreements", - "crud_pilot_service_list_channel_invoices", - "crud_pilot_service_list_channel_mail_addresses", - "crud_pilot_service_list_checkup_institution_invoices", - "crud_pilot_service_list_project_system_items", - "crud_pilot_service_row_to_dict_channel_agreement_price", - "crud_pilot_service_row_to_dict_channel_invoice", - "crud_pilot_service_row_to_dict_channel_mail_address", - "crud_pilot_service_row_to_dict_checkup_institution_invoice", - "crud_pilot_service_row_to_dict_project_system_item", - "crud_production_material_filter_material_type", - "crud_production_material_prep_list_available_material_batches", - "crud_production_material_prep_rationale_1296", - "crud_production_material_usage_amount_for_row", - "crud_production_material_usage_batch_map", - "crud_production_material_usage_display_remark", - "crud_production_material_usage_fmt_date_val", - "crud_production_material_usage_list_available_requisitions_for_prep", - "crud_production_material_usage_list_linked_step_usages", - "crud_production_material_usage_list_my_prep_consumptions", - "crud_production_material_usage_list_my_usages", - "crud_production_material_usage_list_prep_consumptions", - "crud_production_material_usage_list_requisition_options", - "crud_production_material_usage_list_stock_check_requisitions", - "crud_production_material_usage_list_usages", - "crud_production_material_usage_list_usages_by_step", - "crud_production_material_usage_list_usages_query", - "crud_production_material_usage_mark_requisition_fully_used", - "crud_production_material_usage_mine_usage_filter", - "crud_production_material_usage_paginate_usages", - "crud_production_material_usage_parse_receiver_purpose_from_remark", - "crud_production_material_usage_prep_consumption_to_dict", - "crud_production_material_usage_rationale_1064", - "crud_production_material_usage_rationale_1233", - "crud_production_material_usage_rationale_1312", - "crud_production_material_usage_rationale_195", - "crud_production_material_usage_rationale_20", - "crud_production_material_usage_rationale_367", - "crud_production_material_usage_rationale_391", - "crud_production_material_usage_rationale_42", - "crud_production_material_usage_rationale_448", - "crud_production_material_usage_rationale_524", - "crud_production_material_usage_rationale_595", - "crud_production_material_usage_rationale_934", - "crud_production_material_usage_receiver_display_map", - "crud_production_material_usage_record_step_usage_from_requisition", - "crud_production_material_usage_resolve_receiver_purpose", - "crud_production_material_usage_revert_step_material_usages", - "crud_production_material_usage_row_to_dict", - "crud_production_material_usage_step_consumed_qty_map", - "crud_production_material_usage_stock_in_date_for_row", - "crud_production_material_usage_unit_price_for_row", - "crud_production_material_usage_usage_unit_label", - "crud_production_material_usage_user_nick_name_map", - "crud_qc_material_amount_auth_assert_user_in_auth_dept", - "crud_qc_material_amount_auth_get_amount_view_role", - "crud_qc_material_amount_auth_get_auth_dept_id", - "crud_qc_material_amount_auth_grant_amount_view_role", - "crud_qc_material_amount_auth_list_authorized_users", - "crud_qc_material_amount_auth_rationale_1", - "crud_qc_material_amount_auth_rationale_159", - "crud_qc_material_amount_auth_rationale_207", - "crud_qc_material_amount_auth_revoke_amount_view_role", - "crud_qc_material_amount_auth_row_to_dict", - "crud_qc_material_amount_auth_user_has_role_binding", - "crud_qc_material_usage_amount_for_row", - "crud_qc_material_usage_batch_map", - "crud_qc_material_usage_deduct_for_task", - "crud_qc_material_usage_display_remark", - "crud_qc_material_usage_fmt_date_val", - "crud_qc_material_usage_linked_qc_task_no_map", - "crud_qc_material_usage_list_linked_task_usages", - "crud_qc_material_usage_list_my_usages", - "crud_qc_material_usage_list_requisition_options", - "crud_qc_material_usage_list_stock_check_requisitions", - "crud_qc_material_usage_list_usages", - "crud_qc_material_usage_list_usages_by_task", - "crud_qc_material_usage_list_usages_query", - "crud_qc_material_usage_mine_usage_filter", - "crud_qc_material_usage_paginate_usages", - "crud_qc_material_usage_parse_receiver_purpose_from_remark", - "crud_qc_material_usage_rationale_181", - "crud_qc_material_usage_rationale_19", - "crud_qc_material_usage_rationale_222", - "crud_qc_material_usage_rationale_408", - "crud_qc_material_usage_rationale_41", - "crud_qc_material_usage_rationale_431", - "crud_qc_material_usage_rationale_488", - "crud_qc_material_usage_rationale_537", - "crud_qc_material_usage_rationale_607", - "crud_qc_material_usage_rationale_874", - "crud_qc_material_usage_rationale_959", - "crud_qc_material_usage_receiver_display_map", - "crud_qc_material_usage_record_task_usage_from_requisition", - "crud_qc_material_usage_resolve_receiver_purpose", - "crud_qc_material_usage_revert_task_material_usages", - "crud_qc_material_usage_row_to_dict", - "crud_qc_material_usage_stock_in_date_for_row", - "crud_qc_material_usage_task_consumed_qty_map", - "crud_qc_material_usage_unit_price_for_row", - "crud_qc_material_usage_usage_unit_label", - "crud_qc_material_usage_user_nick_name_map", - "users_wuzilong_work_00code_zkxw_backend_app_api_ethnic_py", - "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_ethnic_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_material_usage_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_usage_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_amount_auth_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py" - ], - "11": [ + "12": [ + "api_admin_get_user_by_id", + "api_admin_list_post_bound_users", "api_admin_list_roles_for_select", "api_admin_rationale_45", "api_public_avatar_url_field", + "api_public_build_current_user_payload", "api_public_build_user_info_payload", "api_public_change_current_user_password", - "api_public_get_web_auth_menu_codes", + "api_public_get_current_user_profile", "api_public_jwt_user_payload", "api_public_logout", "api_public_rationale_1", "api_public_rationale_115", "api_public_rationale_126", "api_public_rationale_246", + "api_public_rationale_265", "api_public_rationale_279", "api_public_rationale_348", - "api_public_rationale_381", "api_public_rationale_45", "api_public_rationale_54", + "api_public_rationale_73", "api_public_refresh_token", "api_public_resolve_current_user_from_request", "api_public_update_current_user_profile", @@ -3376,7 +3437,16 @@ "core_security_py", "core_security_rationale_5", "core_security_verify_password", + "crud_post_create_post", + "crud_post_get_post", + "crud_post_list_posts", + "crud_post_post_code_exists", + "crud_post_row_to_dict", + "crud_post_soft_delete_post", + "crud_post_total_pages", + "crud_post_update_post", "crud_user_change_password", + "crud_user_create_user", "crud_user_get_user", "crud_user_get_user_with_relations", "crud_user_hash_password", @@ -3386,6 +3456,7 @@ "crud_user_rationale_1", "crud_user_rationale_134", "crud_user_rationale_181", + "crud_user_replace_associations", "crud_user_reset_password", "crud_user_row_to_dict", "crud_user_set_user_post_ids_only", @@ -3396,6 +3467,8 @@ "crud_user_user_no_exists", "crud_user_usercrudcompat", "crud_user_usercrudcompat_get_by_user_no", + "models_models_rationale_242", + "models_models_sysuserpost", "services_web_auth_roles_active_role_name_rows", "services_web_auth_roles_get_user_role_names", "services_web_auth_roles_iter_user_menu_perm_codes", @@ -3413,10 +3486,125 @@ "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py" ], - "12": [ + "13": [ + "api_basic_info_cellsampletypecreatebody", + "api_basic_info_cellsampletypeupdatebody", + "api_basic_info_collectionregioncreatebody", + "api_basic_info_collectionregionupdatebody", + "api_basic_info_create_collection_region", + "api_basic_info_customercreatebody", + "api_basic_info_customerupdatebody", + "api_basic_info_delete_cell_sample_type", + "api_basic_info_delete_collection_region", + "api_basic_info_delete_customer", + "api_basic_info_delete_hospital", + "api_basic_info_delete_protocol_no", + "api_basic_info_delete_sample_code", + "api_basic_info_get_tenant_no", + "api_basic_info_hospitalcreatebody", + "api_basic_info_hospitalupdatebody", + "api_basic_info_list_cell_sample_types", + "api_basic_info_list_collection_regions", + "api_basic_info_list_customers", + "api_basic_info_list_hospitals", + "api_basic_info_list_protocol_nos", + "api_basic_info_list_sample_codes", + "api_basic_info_protocolnobatchgeneratebody", + "api_basic_info_protocolnobatchissuebody", + "api_basic_info_protocolnobatchrevokebody", + "api_basic_info_protocolnocreatebody", + "api_basic_info_protocolnoupdatebody", + "api_basic_info_rationale_1", + "api_basic_info_samplecodebatchgeneratebody", + "api_basic_info_samplecodebatchissuebody", + "api_basic_info_samplecodebatchrevokebody", + "api_basic_info_samplecodecreatebody", + "api_basic_info_samplecodeupdatebody", + "api_basic_info_search_collection_hospitals", + "api_basic_info_update_collection_region", + "api_basic_info_update_hospital", + "api_collection_protocol_ensure_customer_for_mother", + "api_collection_protocol_rationale_83", + "crud_cell_sample_type_create_cell_sample_type", + "crud_cell_sample_type_get_cell_sample_type", + "crud_cell_sample_type_list_cell_sample_types", + "crud_cell_sample_type_rationale_1", + "crud_cell_sample_type_row_to_dict", + "crud_cell_sample_type_soft_delete_cell_sample_type", + "crud_cell_sample_type_total_pages", + "crud_cell_sample_type_type_code_exists", + "crud_cell_sample_type_update_cell_sample_type", + "crud_collection_protocol_no_batch_generate_protocol_nos", + "crud_collection_protocol_no_batch_issue_protocol_nos", + "crud_collection_protocol_no_batch_revoke_protocol_nos", + "crud_collection_protocol_no_create_protocol_no", + "crud_collection_protocol_no_enrich_issued_user_names", + "crud_collection_protocol_no_get_protocol_no", + "crud_collection_protocol_no_list_protocol_nos", + "crud_collection_protocol_no_parse_issued_time", + "crud_collection_protocol_no_protocol_no_exists", + "crud_collection_protocol_no_rationale_1", + "crud_collection_protocol_no_rationale_20", + "crud_collection_protocol_no_rationale_256", + "crud_collection_protocol_no_rationale_34", + "crud_collection_protocol_no_resolve_issued_user_display_name", + "crud_collection_protocol_no_row_to_dict", + "crud_collection_protocol_no_soft_delete_protocol_no", + "crud_collection_protocol_no_total_pages", + "crud_collection_protocol_no_update_protocol_no", + "crud_collection_region_create_hospital", + "crud_collection_region_get_collection_region", + "crud_collection_region_get_hospital", + "crud_collection_region_hospital_names_by_region_ids", + "crud_collection_region_hospital_to_dict", + "crud_collection_region_list_collection_regions", + "crud_collection_region_list_hospitals", + "crud_collection_region_rationale_234", + "crud_collection_region_rationale_29", + "crud_collection_region_region_to_dict", + "crud_collection_region_search_hospitals_by_keyword", + "crud_collection_region_soft_delete_collection_region", + "crud_collection_region_soft_delete_hospital", + "crud_collection_region_total_pages", + "crud_collection_region_update_collection_region", + "crud_collection_region_update_hospital", + "crud_customer_create_customer", + "crud_customer_get_customer", + "crud_customer_id_card_taken", + "crud_customer_list_customers", + "crud_customer_normalize_date_bound", + "crud_customer_rationale_1", + "crud_customer_row_to_dict", + "crud_customer_soft_delete_customer", + "crud_customer_total_pages", + "crud_customer_update_customer", + "crud_sample_code_batch_generate_sample_codes", + "crud_sample_code_batch_issue_sample_codes", + "crud_sample_code_batch_revoke_sample_codes", + "crud_sample_code_create_sample_code", + "crud_sample_code_get_sample_code", + "crud_sample_code_list_sample_codes", + "crud_sample_code_parse_issued_time", + "crud_sample_code_rationale_1", + "crud_sample_code_rationale_261", + "crud_sample_code_resolve_issued_user_display_name", + "crud_sample_code_row_to_dict", + "crud_sample_code_sample_code_exists", + "crud_sample_code_soft_delete_sample_code", + "crud_sample_code_total_pages", + "crud_sample_code_update_sample_code", + "users_wuzilong_work_00code_zkxw_backend_app_api_basic_info_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py" + ], + "14": [ "api_production_get_next_cell_product_code", "crud_cell_product_ancestor_link_from_cell_product_input", "crud_cell_product_ancestor_sample_chain_link", @@ -3513,7 +3701,7 @@ "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_handover_inventory_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_occupancy_py" ], - "13": [ + "15": [ "app_main_error_json", "app_main_health_check", "app_main_lifespan", @@ -3605,94 +3793,7 @@ "users_wuzilong_work_00code_zkxw_backend_app_main_py", "users_wuzilong_work_00code_zkxw_backend_app_tasks_init_py" ], - "14": [ - "api_leave_delete_leave", - "api_leave_get_leave", - "api_leave_leave_local_callback", - "api_leave_leave_workflow_callback", - "api_leave_list_leaves", - "api_leave_submit_leave", - "api_leave_update_leave", - "api_workflow_business_type_label", - "api_workflow_enrich_task_list", - "api_workflow_get_business_all_tasks", - "api_workflow_get_business_form_fields", - "api_workflow_get_designer_data", - "api_workflow_get_instance_detail", - "api_workflow_leave_form_fields", - "api_workflow_list_completed_tasks", - "api_workflow_list_my_instances", - "api_workflow_list_pending_tasks", - "api_workflow_list_process_defs", - "api_workflow_processdefcreatebody", - "api_workflow_processdefupdatebody", - "api_workflow_publishversionbody", - "api_workflow_rationale_135", - "api_workflow_startinstancebody", - "api_workflow_taskactionbody", - "crud_leave_get_leave", - "crud_leave_list_leaves", - "crud_leave_row_to_dict", - "crud_leave_soft_delete_leave", - "crud_leave_total_pages", - "crud_leave_update_leave", - "crud_leave_update_leave_status", - "crud_qc_item_param_list_params_by_item", - "crud_qc_item_param_parse_options_list", - "crud_qc_item_param_row_to_dict", - "crud_qc_item_param_save_params_for_item", - "crud_qc_item_param_validate_param", - "crud_qc_task_result_list_results_by_task", - "crud_qc_task_result_list_saved_results_by_task", - "crud_qc_task_result_merge_saved_into_template", - "crud_qc_task_result_rationale_103", - "crud_qc_task_result_rationale_43", - "crud_qc_task_result_resolve_task_item_ref", - "crud_qc_task_result_row_to_dict", - "crud_qc_task_result_save_results_for_task", - "crud_workflow_create_task", - "crud_workflow_get_all_tasks_for_business", - "crud_workflow_get_instance", - "crud_workflow_get_latest_version", - "crud_workflow_get_nodes_by_version", - "crud_workflow_get_pending_tasks_by_node", - "crud_workflow_get_task", - "crud_workflow_get_transitions_by_version", - "crud_workflow_update_instance_status", - "models_qc_param_bizqcitemparam", - "models_qc_param_bizqctaskresult", - "services_workflow_callback_dispatch_local", - "services_workflow_callback_rationale_1", - "services_workflow_callback_rationale_24", - "services_workflow_callback_rationale_29", - "services_workflow_callback_rationale_61", - "services_workflow_callback_register_local_callback", - "services_workflow_callback_trigger_callback", - "services_workflow_engine_compare", - "services_workflow_engine_get_variable", - "services_workflow_engine_parse_node_config", - "services_workflow_engine_parse_variables", - "services_workflow_engine_rationale_1", - "services_workflow_engine_workflowengine", - "services_workflow_engine_workflowengine_advance", - "services_workflow_engine_workflowengine_approve_task", - "services_workflow_engine_workflowengine_check_rules", - "services_workflow_engine_workflowengine_evaluate_condition", - "services_workflow_engine_workflowengine_execute_node", - "services_workflow_engine_workflowengine_init", - "services_workflow_engine_workflowengine_reject_task", - "services_workflow_engine_workflowengine_resolve_approvers", - "services_workflow_engine_workflowengine_start_process", - "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", - "users_wuzilong_work_00code_zkxw_backend_app_api_workflow_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", - "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", - "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", - "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py" - ], - "15": [ + "16": [ "api_research_donation_auditsubmitbody", "api_research_donation_batchdeletebody", "api_research_donation_convertfromstoragebody", @@ -3729,6 +3830,7 @@ "crud_research_donation_create_collection", "crud_research_donation_create_donation", "crud_research_donation_create_party", + "crud_research_donation_create_samples", "crud_research_donation_create_transport", "crud_research_donation_dec", "crud_research_donation_delete_donation", @@ -3778,92 +3880,7 @@ "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_donation_convert_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_py" ], - "16": [ - "api_pilot_application_api_list_applications", - "api_pilot_application_api_save_application", - "crud_clinical_payment_auto_create_payment", - "crud_clinical_payment_rationale_173", - "crud_pilot_application_auto_generate_schedules", - "crud_pilot_application_complete_application", - "crud_pilot_application_create_application", - "crud_pilot_application_create_basic_experiment_sale_schedules", - "crud_pilot_application_create_infusion_plan", - "crud_pilot_application_create_schedule", - "crud_pilot_application_create_schedule_products", - "crud_pilot_application_format_yyyy_mm_dd", - "crud_pilot_application_generate_application_no", - "crud_pilot_application_get_application", - "crud_pilot_application_get_or_create_infusion_plan", - "crud_pilot_application_get_patient_by_application", - "crud_pilot_application_get_schedule_for_plan", - "crud_pilot_application_list_applications", - "crud_pilot_application_list_infusion_plans", - "crud_pilot_application_list_schedules_by_plan", - "crud_pilot_application_mark_schedule_complete", - "crud_pilot_application_normalize_infusion_status_code", - "crud_pilot_application_normalize_yyyymmdd", - "crud_pilot_application_parse_infusion_datetime", - "crud_pilot_application_prepare_infusion_plan_payload", - "crud_pilot_application_rationale_1", - "crud_pilot_application_rationale_104", - "crud_pilot_application_rationale_1476", - "crud_pilot_application_rationale_1577", - "crud_pilot_application_rationale_1623", - "crud_pilot_application_rationale_69", - "crud_pilot_application_release_application_no_for_soft_delete", - "crud_pilot_application_resolve_application_attachment_payload", - "crud_pilot_application_row_to_dict_application", - "crud_pilot_application_row_to_dict_infusion_plan", - "crud_pilot_application_row_to_dict_infusion_schedule", - "crud_pilot_application_row_to_dict_patient", - "crud_pilot_application_row_to_dict_schedule_product", - "crud_pilot_application_save_application_infusion", - "crud_pilot_application_save_patient", - "crud_pilot_application_schedule_deletable", - "crud_pilot_application_schedule_has_blocking_links", - "crud_pilot_application_schedule_infusion_editable", - "crud_pilot_application_schedule_locked", - "crud_pilot_application_soft_delete_application", - "crud_pilot_application_soft_delete_infusion_plan", - "crud_pilot_application_soft_delete_schedule", - "crud_pilot_application_start_application", - "crud_pilot_application_update_application", - "crud_pilot_application_update_infusion_plan", - "crud_pilot_application_update_schedule", - "crud_pilot_application_update_schedule_editable", - "crud_pilot_application_update_schedule_order_only", - "crud_pilot_application_upsert_application_infusion", - "crud_pilot_application_upsert_schedule_products", - "crud_pilot_application_void_application", - "crud_pilot_outbound_status_sync_get_schedule", - "crud_pilot_outbound_status_sync_is_pilot_outbound_production", - "crud_pilot_outbound_status_sync_is_pilot_outbound_qc", - "crud_pilot_outbound_status_sync_rationale_1", - "crud_pilot_outbound_status_sync_rationale_131", - "crud_pilot_outbound_status_sync_rationale_174", - "crud_pilot_outbound_status_sync_rationale_64", - "crud_pilot_outbound_status_sync_rationale_96", - "crud_pilot_outbound_status_sync_sync_pilot_outbound_from_schedule", - "crud_pilot_outbound_status_sync_sync_production_work_order_from_schedule", - "crud_pilot_outbound_status_sync_sync_qc_work_order_from_schedule", - "crud_pilot_outbound_status_sync_sync_schedule_from_production_work_order", - "crud_pilot_outbound_status_sync_sync_schedule_from_qc_work_order", - "crud_pilot_outbound_status_sync_touch", - "crud_qc_work_order_create_outbound_qc_work_order", - "crud_qc_work_order_rationale_99", - "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", - "models_clinical_payment_bizpilotpayment", - "models_clinical_payment_rationale_8", - "models_models_bizpilotinfusionschedule", - "models_models_bizpilotinfusionscheduleproduct", - "models_models_rationale_3253", - "models_models_rationale_3282", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_application_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_outbound_status_sync_py", - "users_wuzilong_work_00code_zkxw_backend_app_models_clinical_payment_py" - ], "17": [ - "api_operations_list_storage_slot_select_options", "api_operations_list_storage_slot_stats", "api_operations_list_storage_slots", "api_operations_rationale_621", @@ -3873,6 +3890,7 @@ "crud_storage_facility_batch_create_slots", "crud_storage_facility_build_node_path_cache", "crud_storage_facility_build_slot_keyword_sql_filters", + "crud_storage_facility_clear_slots_by_facility_node", "crud_storage_facility_collect_descendant_ids", "crud_storage_facility_collect_slot_host_node_ids", "crud_storage_facility_create_facility", @@ -3939,76 +3957,149 @@ "users_wuzilong_work_00code_zkxw_backend_app_services_storage_facility_code_py" ], "18": [ - "api_cleanroom_garment_batch_delete_cleanroom_garments", - "api_cleanroom_garment_batch_discard_cleanroom_garments", - "api_cleanroom_garment_create_cleanroom_garment", - "api_cleanroom_garment_create_sterilize_log", - "api_cleanroom_garment_create_wash_log", - "api_cleanroom_garment_delete_cleanroom_garment", - "api_cleanroom_garment_delete_sterilize_log", - "api_cleanroom_garment_delete_wash_log", - "api_cleanroom_garment_discard_cleanroom_garment", - "api_cleanroom_garment_garmentbatchdeletebody", - "api_cleanroom_garment_garmentbatchdiscardbody", - "api_cleanroom_garment_garmentcreatebody", - "api_cleanroom_garment_garmentdiscardbody", - "api_cleanroom_garment_garmentupdatebody", - "api_cleanroom_garment_get_cleanroom_garment", - "api_cleanroom_garment_get_tenant_no", - "api_cleanroom_garment_list_cleanroom_garments", - "api_cleanroom_garment_list_sterilize_logs", - "api_cleanroom_garment_list_wash_logs", - "api_cleanroom_garment_sterilizelogbatchbody", - "api_cleanroom_garment_sterilizelogcreatebody", - "api_cleanroom_garment_sterilizelogupdatebody", - "api_cleanroom_garment_update_cleanroom_garment", - "api_cleanroom_garment_update_sterilize_log", - "api_cleanroom_garment_update_wash_log", - "api_cleanroom_garment_washlogbatchbody", - "api_cleanroom_garment_washlogcreatebody", - "api_cleanroom_garment_washlogupdatebody", - "crud_cleanroom_garment_batch_create_sterilize_logs", - "crud_cleanroom_garment_batch_create_wash_logs", - "crud_cleanroom_garment_batch_discard_garments", - "crud_cleanroom_garment_batch_soft_delete_garments", - "crud_cleanroom_garment_count_map", - "crud_cleanroom_garment_create_garment", - "crud_cleanroom_garment_create_sterilize_log", - "crud_cleanroom_garment_create_wash_log", - "crud_cleanroom_garment_discard_garment", - "crud_cleanroom_garment_ensure_garment_active", - "crud_cleanroom_garment_garment_code_exists", - "crud_cleanroom_garment_garment_to_dict", - "crud_cleanroom_garment_get_garment", - "crud_cleanroom_garment_get_garment_detail", - "crud_cleanroom_garment_get_sterilize_log", - "crud_cleanroom_garment_get_wash_log", - "crud_cleanroom_garment_list_garments", - "crud_cleanroom_garment_list_sterilize_logs", - "crud_cleanroom_garment_list_wash_logs", - "crud_cleanroom_garment_parse_date", - "crud_cleanroom_garment_parse_datetime", - "crud_cleanroom_garment_parse_limit", - "crud_cleanroom_garment_soft_delete_garment", - "crud_cleanroom_garment_soft_delete_sterilize_log", - "crud_cleanroom_garment_soft_delete_wash_log", - "crud_cleanroom_garment_sterilize_log_to_dict", - "crud_cleanroom_garment_total_pages", - "crud_cleanroom_garment_update_garment", - "crud_cleanroom_garment_update_sterilize_log", - "crud_cleanroom_garment_update_wash_log", - "crud_cleanroom_garment_wash_log_to_dict", - "models_cleanroom_garment_bizcleanroomgarment", - "models_cleanroom_garment_bizcleanroomgarmentsterilizelog", - "models_cleanroom_garment_bizcleanroomgarmentwashlog", - "models_cleanroom_garment_rationale_33", - "models_cleanroom_garment_rationale_54", - "models_cleanroom_garment_rationale_9", - "users_wuzilong_work_00code_zkxw_backend_app_api_cleanroom_garment_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_cleanroom_garment_py", - "users_wuzilong_work_00code_zkxw_backend_app_models_cleanroom_garment_py" + "crud_production_material_batch_stock_in", + "crud_production_material_batch_stock_out", + "crud_production_material_build_manual_out_remark", + "crud_production_material_code_exists", + "crud_production_material_create_material", + "crud_production_material_dec", + "crud_production_material_filter_material_type", + "crud_production_material_fmt_dt", + "crud_production_material_get_material", + "crud_production_material_is_enabled_status", + "crud_production_material_list_materials", + "crud_production_material_norm_material_type", + "crud_production_material_norm_status", + "crud_production_material_options_list", + "crud_production_material_prep_list_available_material_batches", + "crud_production_material_prep_rationale_1296", + "crud_production_material_rationale_26", + "crud_production_material_rationale_381", + "crud_production_material_rationale_530", + "crud_production_material_row_to_dict", + "crud_production_material_soft_delete_material", + "crud_production_material_stock_in", + "crud_production_material_stock_out", + "crud_production_material_total_pages", + "crud_production_material_update_material", + "crud_production_material_usage_amount_for_row", + "crud_production_material_usage_batch_map", + "crud_production_material_usage_deduct_step_usage_legacy_batch", + "crud_production_material_usage_display_remark", + "crud_production_material_usage_fmt_date_val", + "crud_production_material_usage_list_available_requisitions_for_prep", + "crud_production_material_usage_list_linked_step_usages", + "crud_production_material_usage_list_my_prep_consumptions", + "crud_production_material_usage_list_my_usages", + "crud_production_material_usage_list_prep_consumptions", + "crud_production_material_usage_list_requisition_options", + "crud_production_material_usage_list_stock_check_requisitions", + "crud_production_material_usage_list_usages", + "crud_production_material_usage_list_usages_by_step", + "crud_production_material_usage_list_usages_query", + "crud_production_material_usage_mine_usage_filter", + "crud_production_material_usage_paginate_usages", + "crud_production_material_usage_parse_receiver_purpose_from_remark", + "crud_production_material_usage_prep_consumption_to_dict", + "crud_production_material_usage_rationale_1064", + "crud_production_material_usage_rationale_1233", + "crud_production_material_usage_rationale_1312", + "crud_production_material_usage_rationale_195", + "crud_production_material_usage_rationale_20", + "crud_production_material_usage_rationale_367", + "crud_production_material_usage_rationale_391", + "crud_production_material_usage_rationale_42", + "crud_production_material_usage_rationale_448", + "crud_production_material_usage_rationale_524", + "crud_production_material_usage_rationale_595", + "crud_production_material_usage_rationale_773", + "crud_production_material_usage_rationale_878", + "crud_production_material_usage_rationale_934", + "crud_production_material_usage_receiver_display_map", + "crud_production_material_usage_record_step_usage_from_requisition", + "crud_production_material_usage_register_step_usage_from_requisition", + "crud_production_material_usage_resolve_receiver_purpose", + "crud_production_material_usage_revert_step_material_usages", + "crud_production_material_usage_row_to_dict", + "crud_production_material_usage_step_consumed_qty_map", + "crud_production_material_usage_stock_in_date_for_row", + "crud_production_material_usage_unit_price_for_row", + "crud_production_material_usage_usage_unit_label", + "crud_production_material_usage_user_nick_name_map", + "models_production_material_bizproductionmaterialusage", + "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_production_material_usage_py" ], "19": [ + "crud_production_task_rationale_2496", + "crud_production_task_spawn_temporary_work_order_from_task", + "crud_production_work_order_accept_conclusion_label", + "crud_production_work_order_apply_planned_start_time_step_filter", + "crud_production_work_order_attach_outbound_detail", + "crud_production_work_order_attach_reception_detail", + "crud_production_work_order_complete_production_work_order", + "crud_production_work_order_configure_temp_production_work_order", + "crud_production_work_order_create_outbound_production_work_order", + "crud_production_work_order_create_production_work_order_from_reception", + "crud_production_work_order_create_production_work_order_manual", + "crud_production_work_order_create_temp_production_work_order", + "crud_production_work_order_dec_price", + "crud_production_work_order_delete_production_work_order", + "crud_production_work_order_delete_temp_production_work_order", + "crud_production_work_order_enrich_outbound_items", + "crud_production_work_order_enrich_wo_items", + "crud_production_work_order_fmt_dt", + "crud_production_work_order_generate_outbound_work_order_no", + "crud_production_work_order_generate_temp_work_order_no", + "crud_production_work_order_generate_work_order_no", + "crud_production_work_order_get_production_info_map_for_samples", + "crud_production_work_order_get_production_work_order", + "crud_production_work_order_get_temp_production_work_order", + "crud_production_work_order_get_temp_production_work_order_detail", + "crud_production_work_order_list_production_work_orders", + "crud_production_work_order_list_temp_production_work_orders", + "crud_production_work_order_normalize_date_bound", + "crud_production_work_order_production_info_item", + "crud_production_work_order_production_task_info", + "crud_production_work_order_rationale_245", + "crud_production_work_order_rationale_444", + "crud_production_work_order_rationale_475", + "crud_production_work_order_rationale_526", + "crud_production_work_order_rationale_545", + "crud_production_work_order_rationale_851", + "crud_production_work_order_rationale_899", + "crud_production_work_order_rationale_950", + "crud_production_work_order_rationale_97", + "crud_production_work_order_rationale_976", + "crud_production_work_order_reception_source_label", + "crud_production_work_order_soft_delete_sub", + "crud_production_work_order_sync_temp_production_work_order_status", + "crud_production_work_order_temp_wo_to_dict", + "crud_production_work_order_update_production_work_order", + "crud_production_work_order_wo_to_dict", + "crud_production_work_order_wo_to_response_dict", + "services_qc_work_order_fee_summary_build_basic_experiment_fee_summaries", + "services_qc_work_order_fee_summary_build_basic_experiment_fee_summary", + "services_qc_work_order_fee_summary_build_protocol_payment_summaries", + "services_qc_work_order_fee_summary_build_protocol_payment_summary", + "services_qc_work_order_fee_summary_dec", + "services_qc_work_order_fee_summary_effective_collection_protocol_id", + "services_qc_work_order_fee_summary_enrich_work_order_fee_summaries", + "services_qc_work_order_fee_summary_fmt_ymd", + "services_qc_work_order_fee_summary_is_inbound_cell_storage_item", + "services_qc_work_order_fee_summary_is_outbound_fee_biz_type", + "services_qc_work_order_fee_summary_load_protocol_id_by_no", + "services_qc_work_order_fee_summary_load_reception_map", + "services_qc_work_order_fee_summary_payment_detail_row", + "services_qc_work_order_fee_summary_protocol_overall_status", + "services_qc_work_order_fee_summary_protocol_status_hint", + "services_qc_work_order_fee_summary_rationale_1", + "services_qc_work_order_fee_summary_received_amount_from_details", + "services_qc_work_order_fee_summary_sort_payment_details", + "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", + "users_wuzilong_work_00code_zkxw_backend_app_services_qc_work_order_fee_summary_py" + ], + "20": [ "basehttpmiddleware", "core_admin_request_json_parse_admin_request_json", "core_admin_request_json_py", @@ -4049,15 +4140,7 @@ "core_request_payload_rationale_18", "core_request_payload_resolve_request_payload", "core_storage_qiniustorage_delete_file", - "core_utils_format_datetime", "core_utils_generate_id", - "core_utils_generate_random_password", - "core_utils_get_current_time", - "core_utils_get_file_size_display", - "core_utils_optional_date", - "core_utils_parse_date", - "core_utils_py", - "core_utils_rationale_71", "crud_base_camel_to_snake", "crud_base_crudbase", "crud_base_crudbase_create", @@ -4070,11 +4153,12 @@ "crud_base_historycrud", "crud_base_historycrud_create_history", "crud_base_py", + "crud_workflow_create_task", "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_py", "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py" ], - "20": [ + "21": [ "crud_material_code_exists", "crud_material_create_material", "crud_material_dec", @@ -4129,105 +4213,88 @@ "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_batch_py" ], - "21": [ - "crud_production_task_production_conclusion_label", - "crud_production_task_rationale_2496", - "crud_production_task_spawn_temporary_work_order_from_task", - "crud_production_work_order_accept_conclusion_label", - "crud_production_work_order_apply_planned_start_time_step_filter", - "crud_production_work_order_attach_outbound_detail", - "crud_production_work_order_attach_reception_detail", - "crud_production_work_order_complete_production_work_order", - "crud_production_work_order_configure_temp_production_work_order", - "crud_production_work_order_create_outbound_production_work_order", - "crud_production_work_order_create_production_work_order_from_reception", - "crud_production_work_order_create_production_work_order_manual", - "crud_production_work_order_create_temp_production_work_order", - "crud_production_work_order_dec_price", - "crud_production_work_order_delete_production_work_order", - "crud_production_work_order_delete_temp_production_work_order", - "crud_production_work_order_enrich_outbound_items", - "crud_production_work_order_enrich_wo_items", - "crud_production_work_order_fmt_dt", - "crud_production_work_order_generate_outbound_work_order_no", - "crud_production_work_order_generate_temp_work_order_no", - "crud_production_work_order_generate_work_order_no", - "crud_production_work_order_get_production_info_map_for_samples", - "crud_production_work_order_get_production_work_order", - "crud_production_work_order_get_temp_production_work_order", - "crud_production_work_order_get_temp_production_work_order_detail", - "crud_production_work_order_list_production_work_orders", - "crud_production_work_order_list_temp_production_work_orders", - "crud_production_work_order_normalize_date_bound", - "crud_production_work_order_production_info_item", - "crud_production_work_order_production_task_info", - "crud_production_work_order_rationale_245", - "crud_production_work_order_rationale_444", - "crud_production_work_order_rationale_475", - "crud_production_work_order_rationale_526", - "crud_production_work_order_rationale_545", - "crud_production_work_order_rationale_851", - "crud_production_work_order_rationale_899", - "crud_production_work_order_rationale_950", - "crud_production_work_order_rationale_97", - "crud_production_work_order_rationale_976", - "crud_production_work_order_reception_source_label", - "crud_production_work_order_soft_delete_sub", - "crud_production_work_order_sync_temp_production_work_order_status", - "crud_production_work_order_temp_wo_to_dict", - "crud_production_work_order_update_production_work_order", - "crud_production_work_order_wo_to_dict", - "crud_production_work_order_wo_to_response_dict", - "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py" - ], "22": [ - "api_env_detect_create_env_detect_item", - "api_env_detect_create_env_detect_record", - "api_env_detect_delete_env_detect_item", - "api_env_detect_delete_env_detect_record", - "api_env_detect_envdetectitembody", - "api_env_detect_envdetectitemupdatebody", - "api_env_detect_envdetectrecordbody", - "api_env_detect_envdetectrecordupdatebody", - "api_env_detect_get_current_user_id", - "api_env_detect_get_env_detect_item", - "api_env_detect_get_tenant_no", - "api_env_detect_list_active_env_detect_items", - "api_env_detect_list_env_detect_items", - "api_env_detect_list_env_detect_records", - "api_env_detect_page_payload", - "api_env_detect_parse_detect_date", - "api_env_detect_parse_detect_date_bound", - "api_env_detect_rationale_1", - "api_env_detect_update_env_detect_item", - "api_env_detect_update_env_detect_record", - "crud_env_detect_item_create_env_detect_item", - "crud_env_detect_item_get_env_detect_item", - "crud_env_detect_item_item_code_exists", - "crud_env_detect_item_list_active_env_detect_items", - "crud_env_detect_item_list_env_detect_items", - "crud_env_detect_item_order_query", - "crud_env_detect_item_row_to_dict", - "crud_env_detect_item_soft_delete_env_detect_item", - "crud_env_detect_item_update_env_detect_item", - "crud_env_detect_record_create_env_detect_record", - "crud_env_detect_record_generate_record_no", - "crud_env_detect_record_get_env_detect_record", - "crud_env_detect_record_join_csv", - "crud_env_detect_record_list_env_detect_records", - "crud_env_detect_record_resolve_inspector_snapshots", - "crud_env_detect_record_resolve_item_snapshot", - "crud_env_detect_record_row_to_dict", - "crud_env_detect_record_soft_delete_env_detect_record", - "crud_env_detect_record_split_csv", - "crud_env_detect_record_update_env_detect_record", - "models_models_bizenvdetectitem", - "models_models_rationale_3613", - "users_wuzilong_work_00code_zkxw_backend_app_api_env_detect_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_env_detect_item_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_env_detect_record_py" + "crud_cleanroom_garment_batch_create_sterilize_logs", + "crud_cleanroom_garment_batch_create_wash_logs", + "crud_cleanroom_garment_batch_discard_garments", + "crud_cleanroom_garment_batch_soft_delete_garments", + "crud_cleanroom_garment_count_map", + "crud_cleanroom_garment_create_garment", + "crud_cleanroom_garment_create_sterilize_log", + "crud_cleanroom_garment_create_wash_log", + "crud_cleanroom_garment_discard_garment", + "crud_cleanroom_garment_ensure_garment_active", + "crud_cleanroom_garment_garment_code_exists", + "crud_cleanroom_garment_garment_to_dict", + "crud_cleanroom_garment_get_garment", + "crud_cleanroom_garment_get_garment_detail", + "crud_cleanroom_garment_get_sterilize_log", + "crud_cleanroom_garment_get_wash_log", + "crud_cleanroom_garment_list_garments", + "crud_cleanroom_garment_list_sterilize_logs", + "crud_cleanroom_garment_list_wash_logs", + "crud_cleanroom_garment_parse_date", + "crud_cleanroom_garment_parse_datetime", + "crud_cleanroom_garment_parse_limit", + "crud_cleanroom_garment_soft_delete_garment", + "crud_cleanroom_garment_soft_delete_sterilize_log", + "crud_cleanroom_garment_soft_delete_wash_log", + "crud_cleanroom_garment_sterilize_log_to_dict", + "crud_cleanroom_garment_total_pages", + "crud_cleanroom_garment_update_garment", + "crud_cleanroom_garment_update_sterilize_log", + "crud_cleanroom_garment_update_wash_log", + "crud_cleanroom_garment_wash_log_to_dict", + "models_cleanroom_garment_bizcleanroomgarment", + "models_cleanroom_garment_bizcleanroomgarmentsterilizelog", + "models_cleanroom_garment_bizcleanroomgarmentwashlog", + "models_cleanroom_garment_rationale_33", + "models_cleanroom_garment_rationale_54", + "models_cleanroom_garment_rationale_9", + "users_wuzilong_work_00code_zkxw_backend_app_crud_cleanroom_garment_py", + "users_wuzilong_work_00code_zkxw_backend_app_models_cleanroom_garment_py" ], "23": [ + "crud_qc_material_usage_amount_for_row", + "crud_qc_material_usage_batch_map", + "crud_qc_material_usage_deduct_for_task", + "crud_qc_material_usage_display_remark", + "crud_qc_material_usage_fmt_date_val", + "crud_qc_material_usage_linked_qc_task_no_map", + "crud_qc_material_usage_list_linked_task_usages", + "crud_qc_material_usage_list_my_usages", + "crud_qc_material_usage_list_requisition_options", + "crud_qc_material_usage_list_stock_check_requisitions", + "crud_qc_material_usage_list_usages", + "crud_qc_material_usage_list_usages_by_task", + "crud_qc_material_usage_list_usages_query", + "crud_qc_material_usage_mine_usage_filter", + "crud_qc_material_usage_paginate_usages", + "crud_qc_material_usage_parse_receiver_purpose_from_remark", + "crud_qc_material_usage_rationale_181", + "crud_qc_material_usage_rationale_19", + "crud_qc_material_usage_rationale_222", + "crud_qc_material_usage_rationale_408", + "crud_qc_material_usage_rationale_41", + "crud_qc_material_usage_rationale_431", + "crud_qc_material_usage_rationale_488", + "crud_qc_material_usage_rationale_537", + "crud_qc_material_usage_rationale_607", + "crud_qc_material_usage_rationale_874", + "crud_qc_material_usage_rationale_959", + "crud_qc_material_usage_receiver_display_map", + "crud_qc_material_usage_record_task_usage_from_requisition", + "crud_qc_material_usage_resolve_receiver_purpose", + "crud_qc_material_usage_revert_task_material_usages", + "crud_qc_material_usage_row_to_dict", + "crud_qc_material_usage_stock_in_date_for_row", + "crud_qc_material_usage_task_consumed_qty_map", + "crud_qc_material_usage_unit_price_for_row", + "crud_qc_material_usage_usage_unit_label", + "crud_qc_material_usage_user_nick_name_map", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py" + ], + "24": [ "api_qc_sms_notification_generate_sms", "api_qc_sms_notification_get_current_user_id", "api_qc_sms_notification_get_tenant_no", @@ -4267,7 +4334,7 @@ "users_wuzilong_work_00code_zkxw_backend_app_api_storage_entry_sms_notification_py", "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_sms_notification_py" ], - "24": [ + "25": [ "core_wechat_pay_get_wechat_pay_client", "core_wechat_pay_get_wechat_pay_v2", "core_wechat_pay_py", @@ -4300,93 +4367,77 @@ "core_wechat_pay_wechatpayv2client_unified_order", "core_wechat_pay_wechatpayv2client_xml_to_dict" ], - "25": [ - "crud_qc_third_party_company_company_code_exists", - "crud_qc_third_party_company_create_company", - "crud_qc_third_party_company_get_company", - "crud_qc_third_party_company_list_companies", - "crud_qc_third_party_company_list_company_options", - "crud_qc_third_party_company_row_to_dict", - "crud_qc_third_party_company_soft_delete_company", - "crud_qc_third_party_company_update_company", - "crud_qc_third_party_item_company_name_map", - "crud_qc_third_party_item_create_item", - "crud_qc_third_party_item_dec", - "crud_qc_third_party_item_get_item", - "crud_qc_third_party_item_item_code_exists", - "crud_qc_third_party_item_list_active_items", - "crud_qc_third_party_item_list_items", - "crud_qc_third_party_item_row_to_dict", - "crud_qc_third_party_item_soft_delete_item", - "crud_qc_third_party_item_update_item", - "models_models_bizqcthirdpartyitem", - "models_models_rationale_1328", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", - "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py" - ], "26": [ - "api_basic_info_list_protocol_nos", - "crud_collection_protocol_get_protocol_nos_used_in_protocols", - "crud_collection_protocol_no_batch_generate_protocol_nos", - "crud_collection_protocol_no_batch_issue_protocol_nos", - "crud_collection_protocol_no_batch_revoke_protocol_nos", - "crud_collection_protocol_no_create_protocol_no", - "crud_collection_protocol_no_enrich_issued_user_names", - "crud_collection_protocol_no_get_protocol_no", - "crud_collection_protocol_no_list_protocol_nos", - "crud_collection_protocol_no_parse_issued_time", - "crud_collection_protocol_no_protocol_no_exists", - "crud_collection_protocol_no_rationale_1", - "crud_collection_protocol_no_rationale_20", - "crud_collection_protocol_no_rationale_256", - "crud_collection_protocol_no_rationale_34", - "crud_collection_protocol_no_resolve_issued_user_display_name", - "crud_collection_protocol_no_row_to_dict", - "crud_collection_protocol_no_soft_delete_protocol_no", - "crud_collection_protocol_no_total_pages", - "crud_collection_protocol_no_update_protocol_no", - "crud_collection_protocol_rationale_75", - "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py" + "api_outbound_release_review_batch_review", + "api_outbound_release_review_get_current_user_id", + "api_outbound_release_review_get_outbound_release_materials", + "api_outbound_release_review_get_pilot_release_review_detail", + "api_outbound_release_review_get_tenant_no", + "api_outbound_release_review_list_pilot_release_reviews", + "api_outbound_release_review_save_outbound_release_materials", + "api_outbound_release_review_submit_single_review", + "crud_outbound_release_review_batch_review", + "crud_outbound_release_review_dec", + "crud_outbound_release_review_fmt_dt", + "crud_outbound_release_review_get_schedule_detail", + "crud_outbound_release_review_get_user_name", + "crud_outbound_release_review_list_reviews_paginated", + "crud_outbound_release_review_rationale_139", + "crud_outbound_release_review_rationale_513", + "crud_outbound_release_review_rationale_596", + "crud_outbound_release_review_rationale_81", + "crud_outbound_release_review_rationale_94", + "crud_outbound_release_review_resolve_schedule_biz_type", + "crud_outbound_release_review_review_schedule", + "crud_outbound_release_review_row_to_dict", + "crud_outbound_release_review_total_pages", + "users_wuzilong_work_00code_zkxw_backend_app_api_outbound_release_review_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_outbound_release_review_py" ], "27": [ - "api_basic_info_delete_hospital", - "api_basic_info_list_collection_regions", - "api_basic_info_search_collection_hospitals", - "crud_collection_region_create_hospital", - "crud_collection_region_get_collection_region", - "crud_collection_region_get_hospital", - "crud_collection_region_hospital_names_by_region_ids", - "crud_collection_region_hospital_to_dict", - "crud_collection_region_list_collection_regions", - "crud_collection_region_list_hospitals", - "crud_collection_region_rationale_234", - "crud_collection_region_rationale_29", - "crud_collection_region_region_to_dict", - "crud_collection_region_search_hospitals_by_keyword", - "crud_collection_region_soft_delete_collection_region", - "crud_collection_region_soft_delete_hospital", - "crud_collection_region_total_pages", - "crud_collection_region_update_collection_region", - "crud_collection_region_update_hospital", - "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py" + "api_pilot_infusion_confirm_api_confirm", + "api_pilot_infusion_confirm_api_create", + "api_pilot_infusion_confirm_api_delete", + "api_pilot_infusion_confirm_api_detail", + "api_pilot_infusion_confirm_api_list", + "api_pilot_infusion_confirm_api_update", + "api_pilot_infusion_confirm_confirmcreatebody", + "api_pilot_infusion_confirm_confirmupdatebody", + "api_pilot_infusion_confirm_get_tenant_no", + "api_pilot_infusion_confirm_idbody", + "crud_pilot_infusion_confirm_confirm_infusion", + "crud_pilot_infusion_confirm_create_infusion_confirm", + "crud_pilot_infusion_confirm_delete_infusion_confirm", + "crud_pilot_infusion_confirm_get_confirm_by_id", + "crud_pilot_infusion_confirm_get_confirm_by_schedule", + "crud_pilot_infusion_confirm_list_confirms_by_application", + "crud_pilot_infusion_confirm_rationale_113", + "crud_pilot_infusion_confirm_row_to_dict", + "crud_pilot_infusion_confirm_update_infusion_confirm", + "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_infusion_confirm_py", + "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_infusion_confirm_py" ], "28": [ - "crud_sample_code_batch_generate_sample_codes", - "crud_sample_code_batch_issue_sample_codes", - "crud_sample_code_batch_revoke_sample_codes", - "crud_sample_code_create_sample_code", - "crud_sample_code_get_sample_code", - "crud_sample_code_list_sample_codes", - "crud_sample_code_parse_issued_time", - "crud_sample_code_rationale_1", - "crud_sample_code_rationale_261", - "crud_sample_code_resolve_issued_user_display_name", - "crud_sample_code_row_to_dict", - "crud_sample_code_sample_code_exists", - "crud_sample_code_soft_delete_sample_code", - "crud_sample_code_total_pages", - "crud_sample_code_update_sample_code", - "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py" + "crud_qc_sms_notification_apply_qc_status_filter", + "crud_qc_sms_notification_base_query", + "crud_qc_sms_notification_derive_qc_conclusion", + "crud_qc_sms_notification_ensure_notification", + "crud_qc_sms_notification_eq_ci", + "crud_qc_sms_notification_fetch_completed_tasks", + "crud_qc_sms_notification_fmt_dt", + "crud_qc_sms_notification_generate_sms_content", + "crud_qc_sms_notification_list_notifications", + "crud_qc_sms_notification_normalize_date_bound", + "crud_qc_sms_notification_qc_complete_time", + "crud_qc_sms_notification_qc_status_label", + "crud_qc_sms_notification_rationale_32", + "crud_qc_sms_notification_resolve_notification", + "crud_qc_sms_notification_row_to_dict", + "crud_qc_sms_notification_task_stats_subquery", + "crud_qc_sms_notification_toggle_notification_status", + "crud_qc_sms_notification_total_pages", + "crud_qc_sms_notification_unicode_ci", + "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_sms_notification_py" ], "29": [ "crud_equipment_create_equipment", @@ -4420,6 +4471,21 @@ "core_wechat_message_wechatmessageservice_send_template_message" ], "31": [ + "api_admin_list_depts", + "crud_dept_build_tree", + "crud_dept_cascade_soft_delete", + "crud_dept_collect_with_ancestors", + "crud_dept_create_dept", + "crud_dept_get_dept", + "crud_dept_list_depts", + "crud_dept_list_depts_tree", + "crud_dept_rationale_41", + "crud_dept_row_to_dict", + "crud_dept_soft_delete_dept", + "crud_dept_update_dept", + "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py" + ], + "32": [ "crud_exhibition_appointment_appointment_no_exists", "crud_exhibition_appointment_create_exhibition_appointment", "crud_exhibition_appointment_format_visit_date", @@ -4434,35 +4500,8 @@ "crud_exhibition_appointment_update_exhibition_appointment", "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py" ], - "32": [ - "crud_cell_sample_type_create_cell_sample_type", - "crud_cell_sample_type_get_cell_sample_type", - "crud_cell_sample_type_list_cell_sample_types", - "crud_cell_sample_type_rationale_1", - "crud_cell_sample_type_row_to_dict", - "crud_cell_sample_type_soft_delete_cell_sample_type", - "crud_cell_sample_type_total_pages", - "crud_cell_sample_type_type_code_exists", - "crud_cell_sample_type_update_cell_sample_type", - "models_models_bizcellsampletype", - "models_models_rationale_323", - "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py" - ], "33": [ - "crud_dept_build_tree", - "crud_dept_cascade_soft_delete", - "crud_dept_collect_with_ancestors", - "crud_dept_create_dept", - "crud_dept_get_dept", - "crud_dept_list_depts", - "crud_dept_list_depts_tree", - "crud_dept_rationale_41", - "crud_dept_row_to_dict", - "crud_dept_soft_delete_dept", - "crud_dept_update_dept", - "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py" - ], - "34": [ + "api_admin_list_menus", "crud_menu_build_tree", "crud_menu_cascade_soft_delete", "crud_menu_create_menu", @@ -4475,44 +4514,21 @@ "crud_menu_update_menu", "users_wuzilong_work_00code_zkxw_backend_app_crud_menu_py" ], + "34": [ + "crud_env_detect_record_create_env_detect_record", + "crud_env_detect_record_generate_record_no", + "crud_env_detect_record_get_env_detect_record", + "crud_env_detect_record_join_csv", + "crud_env_detect_record_list_env_detect_records", + "crud_env_detect_record_resolve_inspector_snapshots", + "crud_env_detect_record_resolve_item_snapshot", + "crud_env_detect_record_row_to_dict", + "crud_env_detect_record_soft_delete_env_detect_record", + "crud_env_detect_record_split_csv", + "crud_env_detect_record_update_env_detect_record", + "users_wuzilong_work_00code_zkxw_backend_app_crud_env_detect_record_py" + ], "35": [ - "crud_customer_create_customer", - "crud_customer_get_customer", - "crud_customer_id_card_taken", - "crud_customer_list_customers", - "crud_customer_normalize_date_bound", - "crud_customer_rationale_1", - "crud_customer_row_to_dict", - "crud_customer_soft_delete_customer", - "crud_customer_total_pages", - "crud_customer_update_customer", - "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py" - ], - "36": [ - "crud_reagent_stock_log_display_remark", - "crud_reagent_stock_log_list_stock_logs", - "crud_reagent_stock_log_parse_receiver_purpose_from_remark", - "crud_reagent_stock_log_rationale_1", - "crud_reagent_stock_log_rationale_164", - "crud_reagent_stock_log_resolve_receiver_purpose", - "crud_reagent_stock_log_revert_step_stock_changes", - "crud_reagent_stock_log_row_to_dict", - "crud_reagent_stock_log_user_nick_name_map", - "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_stock_log_py" - ], - "37": [ - "crud_express_company_create_express_company", - "crud_express_company_express_code_exists", - "crud_express_company_get_express_company", - "crud_express_company_list_express_companies", - "crud_express_company_rationale_1", - "crud_express_company_row_to_dict", - "crud_express_company_soft_delete_express_company", - "crud_express_company_total_pages", - "crud_express_company_update_express_company", - "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py" - ], - "38": [ "crud_sample_reception_check_item_create_check_item", "crud_sample_reception_check_item_get_check_item", "crud_sample_reception_check_item_item_code_exists", @@ -4524,19 +4540,19 @@ "crud_sample_reception_check_item_update_check_item", "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py" ], - "39": [ - "crud_process_category_category_code_exists", - "crud_process_category_create_process_category", - "crud_process_category_get_process_category", - "crud_process_category_list_process_categories", - "crud_process_category_rationale_1", - "crud_process_category_row_to_dict", - "crud_process_category_soft_delete_process_category", - "crud_process_category_total_pages", - "crud_process_category_update_process_category", - "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py" + "36": [ + "crud_env_detect_item_create_env_detect_item", + "crud_env_detect_item_get_env_detect_item", + "crud_env_detect_item_item_code_exists", + "crud_env_detect_item_list_active_env_detect_items", + "crud_env_detect_item_list_env_detect_items", + "crud_env_detect_item_order_query", + "crud_env_detect_item_row_to_dict", + "crud_env_detect_item_soft_delete_env_detect_item", + "crud_env_detect_item_update_env_detect_item", + "users_wuzilong_work_00code_zkxw_backend_app_crud_env_detect_item_py" ], - "40": [ + "37": [ "crud_item_unit_create_item_unit", "crud_item_unit_get_item_unit", "crud_item_unit_list_item_units", @@ -4548,7 +4564,7 @@ "crud_item_unit_update_item_unit", "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py" ], - "41": [ + "38": [ "crud_output_type_create_output_type", "crud_output_type_get_output_type", "crud_output_type_list_output_types", @@ -4560,29 +4576,7 @@ "crud_output_type_update_output_type", "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py" ], - "42": [ - "crud_tenant_create_tenant", - "crud_tenant_get_tenant", - "crud_tenant_list_tenants", - "crud_tenant_row_to_dict", - "crud_tenant_soft_delete_tenant", - "crud_tenant_tenant_no_exists", - "crud_tenant_total_pages", - "crud_tenant_update_tenant", - "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py" - ], - "43": [ - "crud_site_create_site", - "crud_site_get_site", - "crud_site_list_sites", - "crud_site_row_to_dict", - "crud_site_site_code_exists", - "crud_site_soft_delete_site", - "crud_site_total_pages", - "crud_site_update_site", - "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py" - ], - "44": [ + "39": [ "core_order_status_compat_derive_legacy_status_from_three", "core_order_status_compat_derive_three_status_from_legacy", "core_order_status_compat_rationale_31", @@ -4591,121 +4585,121 @@ "core_order_status_compat_to_decimal", "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py" ], - "45": [ + "40": [ "basesettings", "core_config_config", "core_config_settings", "users_wuzilong_work_00code_zkxw_backend_app_core_config_py" ], - "46": [ + "41": [ "core_database_auto_fill_create_dept_id", "core_database_get_db", "core_database_rationale_31", "users_wuzilong_work_00code_zkxw_backend_app_core_database_py" ], - "47": [ + "42": [ "api_menu_get_menu_list", "api_menu_rationale_1", "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py" ], - "48": [ + "43": [ "core_qc_material_amount_auth_constants_rationale_1", "users_wuzilong_work_00code_zkxw_backend_app_core_qc_material_amount_auth_constants_py" ], - "49": [ + "44": [ "core_context_rationale_1", "users_wuzilong_work_00code_zkxw_backend_app_core_context_py" ], - "50": [ + "45": [ "api_init_rationale_1", "users_wuzilong_work_00code_zkxw_backend_app_api_init_py" ], - "51": [ + "46": [ "init_py" ], - "52": [ + "47": [ "core_init_py" ], - "53": [ + "48": [ "core_wechat_message_rationale_143" ], - "54": [ + "49": [ "core_wechat_message_rationale_179" ], - "55": [ + "50": [ "core_wechat_message_rationale_215" ], - "56": [ + "51": [ "core_wechat_message_rationale_251" ], - "57": [ + "52": [ "core_wechat_message_rationale_289" ], - "58": [ + "53": [ "core_wechat_message_rationale_325" ], - "59": [ + "54": [ "users_wuzilong_work_00code_zkxw_backend_app_models_init_py" ], - "60": [ + "55": [ "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py" ], - "61": [ + "56": [ "users_wuzilong_work_00code_zkxw_backend_app_crud_init_py" ], - "62": [ + "57": [ "users_wuzilong_work_00code_zkxw_backend_app_ws_init_py" ] }, "cohesion": { "0": 0.01, - "1": 0.0, + "1": 0.01, "2": 0.01, "3": 0.01, "4": 0.02, "5": 0.02, "6": 0.02, - "7": 0.03, - "8": 0.02, - "9": 0.03, + "7": 0.02, + "8": 0.03, + "9": 0.02, "10": 0.03, "11": 0.03, - "12": 0.04, - "13": 0.04, + "12": 0.03, + "13": 0.03, "14": 0.04, "15": 0.04, - "16": 0.05, + "16": 0.04, "17": 0.05, "18": 0.06, "19": 0.05, - "20": 0.08, - "21": 0.07, - "22": 0.08, - "23": 0.1, - "24": 0.12, - "25": 0.16, - "26": 0.14, - "27": 0.16, + "20": 0.05, + "21": 0.08, + "22": 0.11, + "23": 0.11, + "24": 0.1, + "25": 0.12, + "26": 0.15, + "27": 0.18, "28": 0.22, "29": 0.27, "30": 0.24, "31": 0.24, "32": 0.24, - "33": 0.27, - "34": 0.29, - "35": 0.27, - "36": 0.31, + "33": 0.26, + "34": 0.32, + "35": 0.38, + "36": 0.38, "37": 0.31, - "38": 0.38, - "39": 0.31, - "40": 0.31, - "41": 0.31, - "42": 0.36, - "43": 0.36, - "44": 0.38, - "45": 0.5, - "46": 0.5, - "47": 0.67, + "38": 0.31, + "39": 0.38, + "40": 0.5, + "41": 0.5, + "42": 0.67, + "43": 1.0, + "44": 1.0, + "45": 1.0, + "46": 1.0, + "47": 1.0, "48": 1.0, "49": 1.0, "50": 1.0, @@ -4715,12 +4709,7 @@ "54": 1.0, "55": 1.0, "56": 1.0, - "57": 1.0, - "58": 1.0, - "59": 1.0, - "60": 1.0, - "61": 1.0, - "62": 1.0 + "57": 1.0 }, "gods": [ { diff --git a/backend/graphify-out/.graphify_extract.json b/backend/graphify-out/.graphify_extract.json index a62ac4a6..2a1cea45 100644 --- a/backend/graphify-out/.graphify_extract.json +++ b/backend/graphify-out/.graphify_extract.json @@ -7539,124 +7539,138 @@ "source_file": "crud/storage_release_review.py", "source_location": "L128" }, + { + "id": "crud_storage_release_review_normalize_qc_work_order_completed", + "label": "normalize_qc_work_order_completed()", + "file_type": "code", + "source_file": "crud/storage_release_review.py", + "source_location": "L136" + }, + { + "id": "crud_storage_release_review_qc_work_order_exists_for_review_sample", + "label": "_qc_work_order_exists_for_review_sample()", + "file_type": "code", + "source_file": "crud/storage_release_review.py", + "source_location": "L150" + }, { "id": "crud_storage_release_review_list_reviews", "label": "list_reviews()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L136" + "source_location": "L172" }, { "id": "crud_storage_release_review_enrich_review_list_items", "label": "_enrich_review_list_items()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L215" + "source_location": "L269" }, { "id": "crud_storage_release_review_get_user_name", "label": "_get_user_name()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L308" + "source_location": "L362" }, { "id": "crud_storage_release_review_get_review_detail", "label": "get_review_detail()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L313" + "source_location": "L367" }, { "id": "crud_storage_release_review_build_cell_storage_protocol_info", "label": "_build_cell_storage_protocol_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L377" + "source_location": "L431" }, { "id": "crud_storage_release_review_build_research_donation_protocol_info", "label": "_build_research_donation_protocol_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L435" + "source_location": "L489" }, { "id": "crud_storage_release_review_build_cell_storage_transport_info", "label": "_build_cell_storage_transport_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L493" + "source_location": "L547" }, { "id": "crud_storage_release_review_build_research_donation_transport_info", "label": "_build_research_donation_transport_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L527" + "source_location": "L581" }, { "id": "crud_storage_release_review_build_reception_info", "label": "_build_reception_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L561" + "source_location": "L615" }, { "id": "crud_storage_release_review_build_gate_qc_info", "label": "_build_gate_qc_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L584" + "source_location": "L638" }, { "id": "crud_storage_release_review_build_process_qc_info_list", "label": "_build_process_qc_info_list()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L604" + "source_location": "L658" }, { "id": "crud_storage_release_review_build_production_info", "label": "_build_production_info()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L615" + "source_location": "L669" }, { "id": "crud_storage_release_review_submit_review", "label": "submit_review()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L633" + "source_location": "L687" }, { "id": "crud_storage_release_review_batch_submit_review", "label": "batch_submit_review()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L668" + "source_location": "L722" }, { "id": "crud_storage_release_review_store_sample", "label": "store_sample()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L697" + "source_location": "L751" }, { "id": "crud_storage_release_review_batch_store_samples", "label": "batch_store_samples()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L751" + "source_location": "L805" }, { "id": "crud_storage_release_review_get_storage_release_map_for_samples", "label": "get_storage_release_map_for_samples()", "file_type": "code", "source_file": "crud/storage_release_review.py", - "source_location": "L769" + "source_location": "L823" }, { "id": "crud_storage_release_review_rationale_129", @@ -7666,25 +7680,39 @@ "source_location": "L129" }, { - "id": "crud_storage_release_review_rationale_587", + "id": "crud_storage_release_review_rationale_137", + "label": "Return True/False when recognizable; None means no filter.", + "file_type": "rationale", + "source_file": "crud/storage_release_review.py", + "source_location": "L137" + }, + { + "id": "crud_storage_release_review_rationale_153", + "label": "Correlate biz_qc_work_order to BizStorageReleaseReview.sample_code.", + "file_type": "rationale", + "source_file": "crud/storage_release_review.py", + "source_location": "L153" + }, + { + "id": "crud_storage_release_review_rationale_641", "label": "\u5165\u5e93\u653e\u884c\u95e8\u7981\u8d28\u68c0\uff08\u4ec5 trigger_source=reception\uff09\u3002", "file_type": "rationale", "source_file": "crud/storage_release_review.py", - "source_location": "L587" + "source_location": "L641" }, { - "id": "crud_storage_release_review_rationale_607", + "id": "crud_storage_release_review_rationale_661", "label": "\u751f\u4ea7\u8fc7\u7a0b\u89e6\u53d1\u7684\u5165\u5e93\u8d28\u68c0\uff08\u53ea\u8bfb\u5c55\u793a\uff0c\u4e0d\u53c2\u4e0e\u653e\u884c\u5224\u5b9a\uff09\u3002", "file_type": "rationale", "source_file": "crud/storage_release_review.py", - "source_location": "L607" + "source_location": "L661" }, { - "id": "crud_storage_release_review_rationale_776", + "id": "crud_storage_release_review_rationale_830", "label": "\u6309\u6837\u672c\u6279\u91cf\u8fd4\u56de\u5b58\u50a8\u653e\u884c\u5ba1\u6838\u6458\u8981\u3002 \u5f53\u4f20\u5165 sample_code_by_id \u65f6\uff0c\u6309\u79df\u6237 + \u6837\u672c\u7f16\u7801\u5173\u8054\u5b58\u50a8\u653e\u884c\u5ba1\u6838\u8bb0\u5f55\uff0c \u8fd4\u56de\u4ee5 samp", "file_type": "rationale", "source_file": "crud/storage_release_review.py", - "source_location": "L776" + "source_location": "L830" }, { "id": "users_wuzilong_work_00code_zkxw_backend_app_crud_equipment_py", @@ -23245,35 +23273,35 @@ "label": "get_storage_release_review_detail()", "file_type": "code", "source_file": "api/storage_release_review.py", - "source_location": "L71" + "source_location": "L73" }, { "id": "api_storage_release_review_submit_single_review", "label": "submit_single_review()", "file_type": "code", "source_file": "api/storage_release_review.py", - "source_location": "L89" + "source_location": "L91" }, { "id": "api_storage_release_review_batch_review", "label": "batch_review()", "file_type": "code", "source_file": "api/storage_release_review.py", - "source_location": "L118" + "source_location": "L120" }, { "id": "api_storage_release_review_store_single_sample", "label": "store_single_sample()", "file_type": "code", "source_file": "api/storage_release_review.py", - "source_location": "L146" + "source_location": "L148" }, { "id": "api_storage_release_review_batch_store_samples", "label": "batch_store_samples()", "file_type": "code", "source_file": "api/storage_release_review.py", - "source_location": "L171" + "source_location": "L173" }, { "id": "users_wuzilong_work_00code_zkxw_backend_app_api_outbound_release_review_py", @@ -49518,20 +49546,38 @@ }, { "source": "crud_storage_release_review_py", - "target": "crud_storage_release_review_list_reviews", + "target": "crud_storage_release_review_normalize_qc_work_order_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", "source_location": "L136", "weight": 1.0 }, + { + "source": "crud_storage_release_review_py", + "target": "crud_storage_release_review_qc_work_order_exists_for_review_sample", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "crud/storage_release_review.py", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "crud_storage_release_review_py", + "target": "crud_storage_release_review_list_reviews", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "crud/storage_release_review.py", + "source_location": "L172", + "weight": 1.0 + }, { "source": "crud_storage_release_review_py", "target": "crud_storage_release_review_enrich_review_list_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L215", + "source_location": "L269", "weight": 1.0 }, { @@ -49540,7 +49586,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L308", + "source_location": "L362", "weight": 1.0 }, { @@ -49549,7 +49595,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L313", + "source_location": "L367", "weight": 1.0 }, { @@ -49558,7 +49604,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L377", + "source_location": "L431", "weight": 1.0 }, { @@ -49567,7 +49613,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L435", + "source_location": "L489", "weight": 1.0 }, { @@ -49576,7 +49622,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L493", + "source_location": "L547", "weight": 1.0 }, { @@ -49585,7 +49631,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L527", + "source_location": "L581", "weight": 1.0 }, { @@ -49594,7 +49640,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L561", + "source_location": "L615", "weight": 1.0 }, { @@ -49603,7 +49649,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L584", + "source_location": "L638", "weight": 1.0 }, { @@ -49612,7 +49658,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L604", + "source_location": "L658", "weight": 1.0 }, { @@ -49621,7 +49667,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L615", + "source_location": "L669", "weight": 1.0 }, { @@ -49630,7 +49676,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L633", + "source_location": "L687", "weight": 1.0 }, { @@ -49639,7 +49685,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L668", + "source_location": "L722", "weight": 1.0 }, { @@ -49648,7 +49694,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L697", + "source_location": "L751", "weight": 1.0 }, { @@ -49657,7 +49703,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L751", + "source_location": "L805", "weight": 1.0 }, { @@ -49666,7 +49712,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L769", + "source_location": "L823", "weight": 1.0 }, { @@ -49684,7 +49730,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L156", + "source_location": "L193", + "weight": 1.0 + }, + { + "source": "crud_storage_release_review_list_reviews", + "target": "crud_storage_release_review_normalize_qc_work_order_completed", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/storage_release_review.py", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "crud_storage_release_review_list_reviews", + "target": "crud_storage_release_review_qc_work_order_exists_for_review_sample", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/storage_release_review.py", + "source_location": "L233", "weight": 1.0 }, { @@ -49693,7 +49757,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L205", + "source_location": "L259", "weight": 1.0 }, { @@ -49702,7 +49766,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L205", + "source_location": "L259", "weight": 1.0 }, { @@ -49711,7 +49775,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L211", + "source_location": "L265", "weight": 1.0 }, { @@ -49720,7 +49784,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L326", + "source_location": "L380", "weight": 1.0 }, { @@ -49729,7 +49793,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L330", + "source_location": "L384", "weight": 1.0 }, { @@ -49738,7 +49802,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L332", + "source_location": "L386", "weight": 1.0 }, { @@ -49747,7 +49811,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L335", + "source_location": "L389", "weight": 1.0 }, { @@ -49756,7 +49820,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L337", + "source_location": "L391", "weight": 1.0 }, { @@ -49765,7 +49829,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L368", + "source_location": "L422", "weight": 1.0 }, { @@ -49774,7 +49838,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L370", + "source_location": "L424", "weight": 1.0 }, { @@ -49783,7 +49847,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L371", + "source_location": "L425", "weight": 1.0 }, { @@ -49792,7 +49856,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L372", + "source_location": "L426", "weight": 1.0 }, { @@ -49801,7 +49865,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L521", + "source_location": "L575", "weight": 1.0 }, { @@ -49810,7 +49874,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L555", + "source_location": "L609", "weight": 1.0 }, { @@ -49819,7 +49883,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L574", + "source_location": "L628", "weight": 1.0 }, { @@ -49828,7 +49892,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L654", + "source_location": "L708", "weight": 1.0 }, { @@ -49837,7 +49901,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L682", + "source_location": "L736", "weight": 1.0 }, { @@ -49846,7 +49910,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L719", + "source_location": "L773", "weight": 1.0 }, { @@ -49855,7 +49919,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L762", + "source_location": "L816", "weight": 1.0 }, { @@ -49864,7 +49928,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L816", + "source_location": "L870", "weight": 1.0 }, { @@ -49877,30 +49941,48 @@ "weight": 1.0 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", + "target": "crud_storage_release_review_normalize_qc_work_order_completed", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "crud/storage_release_review.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "crud_storage_release_review_rationale_153", + "target": "crud_storage_release_review_qc_work_order_exists_for_review_sample", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "crud/storage_release_review.py", + "source_location": "L153", + "weight": 1.0 + }, + { + "source": "crud_storage_release_review_rationale_641", "target": "crud_storage_release_review_build_gate_qc_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L587", + "source_location": "L641", "weight": 1.0 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_661", "target": "crud_storage_release_review_build_process_qc_info_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L607", + "source_location": "L661", "weight": 1.0 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_830", "target": "crud_storage_release_review_get_storage_release_map_for_samples", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/storage_release_review.py", - "source_location": "L776", + "source_location": "L830", "weight": 1.0 }, { @@ -92830,7 +92912,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L71", + "source_location": "L73", "weight": 1.0 }, { @@ -92839,7 +92921,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L89", + "source_location": "L91", "weight": 1.0 }, { @@ -92848,7 +92930,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L118", + "source_location": "L120", "weight": 1.0 }, { @@ -92857,7 +92939,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L146", + "source_location": "L148", "weight": 1.0 }, { @@ -92866,7 +92948,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L171", + "source_location": "L173", "weight": 1.0 }, { @@ -92875,7 +92957,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L50", + "source_location": "L51", "weight": 1.0 }, { @@ -92884,7 +92966,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L77", + "source_location": "L79", "weight": 1.0 }, { @@ -92893,7 +92975,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L96", + "source_location": "L98", "weight": 1.0 }, { @@ -92902,7 +92984,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L97", + "source_location": "L99", "weight": 1.0 }, { @@ -92911,7 +92993,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L124", + "source_location": "L126", "weight": 1.0 }, { @@ -92920,7 +93002,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L125", + "source_location": "L127", "weight": 1.0 }, { @@ -92929,7 +93011,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L152", + "source_location": "L154", "weight": 1.0 }, { @@ -92938,7 +93020,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L153", + "source_location": "L155", "weight": 1.0 }, { @@ -92947,7 +93029,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L177", + "source_location": "L179", "weight": 1.0 }, { @@ -92956,7 +93038,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/storage_release_review.py", - "source_location": "L178", + "source_location": "L180", "weight": 1.0 }, { @@ -116972,7 +117054,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", @@ -116981,7 +117063,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", @@ -116990,7 +117072,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizcollectionprotocol", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizcollectionprotocol", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", @@ -117008,7 +117108,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizproductionworkorder", "relation": "uses", "confidence": "INFERRED", @@ -117017,7 +117117,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizproductionworkorder", "relation": "uses", "confidence": "INFERRED", @@ -117026,7 +117126,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizproductionworkorder", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizproductionworkorder", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizproductionworkorder", "relation": "uses", "confidence": "INFERRED", @@ -117044,7 +117162,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", @@ -117053,7 +117171,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", @@ -117062,7 +117180,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizprotocolpartycustomer", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizprotocolpartycustomer", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", @@ -117080,7 +117216,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", @@ -117089,7 +117225,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", @@ -117098,7 +117234,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizprotocolsample", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizprotocolsample", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", @@ -117116,7 +117270,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", @@ -117125,7 +117279,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", @@ -117134,7 +117288,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizprotocolsampletransport", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizprotocolsampletransport", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", @@ -117152,7 +117324,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", @@ -117161,7 +117333,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", @@ -117170,7 +117342,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizqcworkorder", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizqcworkorder", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", @@ -117188,7 +117378,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", @@ -117197,7 +117387,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", @@ -117206,7 +117396,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizsamplereception", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizsamplereception", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", @@ -117224,7 +117432,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", @@ -117233,7 +117441,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", @@ -117242,7 +117450,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_bizstoragereleasereview", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_bizstoragereleasereview", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", @@ -117260,7 +117486,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -117269,7 +117495,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -117278,7 +117504,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_models_sysuser", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_models_sysuser", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L12", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -117296,7 +117540,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", @@ -117305,7 +117549,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", @@ -117314,7 +117558,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_research_donation_bizresearchdonation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_research_donation_bizresearchdonation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", @@ -117332,7 +117594,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_research_donation_bizresearchdonationparty", "relation": "uses", "confidence": "INFERRED", @@ -117341,7 +117603,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_research_donation_bizresearchdonationparty", "relation": "uses", "confidence": "INFERRED", @@ -117350,7 +117612,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_research_donation_bizresearchdonationparty", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_research_donation_bizresearchdonationparty", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_research_donation_bizresearchdonationparty", "relation": "uses", "confidence": "INFERRED", @@ -117368,7 +117648,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", @@ -117377,7 +117657,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", @@ -117386,7 +117666,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_research_donation_bizresearchdonationsample", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_research_donation_bizresearchdonationsample", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", @@ -117404,7 +117702,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_587", + "source": "crud_storage_release_review_rationale_137", "target": "models_research_donation_bizresearchdonationsampletransport", "relation": "uses", "confidence": "INFERRED", @@ -117413,7 +117711,7 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_607", + "source": "crud_storage_release_review_rationale_153", "target": "models_research_donation_bizresearchdonationsampletransport", "relation": "uses", "confidence": "INFERRED", @@ -117422,7 +117720,25 @@ "weight": 0.8 }, { - "source": "crud_storage_release_review_rationale_776", + "source": "crud_storage_release_review_rationale_641", + "target": "models_research_donation_bizresearchdonationsampletransport", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_661", + "target": "models_research_donation_bizresearchdonationsampletransport", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "crud/storage_release_review.py", + "source_location": "L23", + "weight": 0.8 + }, + { + "source": "crud_storage_release_review_rationale_830", "target": "models_research_donation_bizresearchdonationsampletransport", "relation": "uses", "confidence": "INFERRED", @@ -118460,6 +118776,26 @@ "source_location": "L107", "weight": 1.0 }, + { + "source": "crud_storage_release_review_normalize_qc_work_order_completed", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/storage_release_review.py", + "source_location": "L142", + "weight": 1.0 + }, + { + "source": "crud_storage_release_review_qc_work_order_exists_for_review_sample", + "target": "crud_base_crudbase_exists", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/storage_release_review.py", + "source_location": "L166", + "weight": 1.0 + }, { "source": "crud_storage_release_review_list_reviews", "target": "crud_sample_reception_reception_ids_matching_lab_storage_keyword", @@ -118467,7 +118803,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L184", + "source_location": "L221", "weight": 1.0 }, { @@ -118477,7 +118813,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L189", + "source_location": "L226", "weight": 1.0 }, { @@ -118487,7 +118823,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L195", + "source_location": "L249", "weight": 1.0 }, { @@ -118497,7 +118833,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L196", + "source_location": "L250", "weight": 1.0 }, { @@ -118507,7 +118843,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L220", + "source_location": "L274", "weight": 1.0 }, { @@ -118517,7 +118853,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L225", + "source_location": "L279", "weight": 1.0 }, { @@ -118527,7 +118863,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L288", + "source_location": "L342", "weight": 1.0 }, { @@ -118537,7 +118873,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L342", + "source_location": "L396", "weight": 1.0 }, { @@ -118547,7 +118883,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L348", + "source_location": "L402", "weight": 1.0 }, { @@ -118557,7 +118893,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L421", + "source_location": "L475", "weight": 1.0 }, { @@ -118567,7 +118903,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L422", + "source_location": "L476", "weight": 1.0 }, { @@ -118577,7 +118913,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L425", + "source_location": "L479", "weight": 1.0 }, { @@ -118587,19 +118923,19 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L425", - "weight": 1.0 - }, - { - "source": "crud_storage_release_review_build_research_donation_protocol_info", - "target": "crud_qc_work_order_load_sample_type_name_map", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "crud/storage_release_review.py", "source_location": "L479", "weight": 1.0 }, + { + "source": "crud_storage_release_review_build_research_donation_protocol_info", + "target": "crud_qc_work_order_load_sample_type_name_map", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/storage_release_review.py", + "source_location": "L533", + "weight": 1.0 + }, { "source": "crud_storage_release_review_build_research_donation_protocol_info", "target": "crud_base_crudbase_get", @@ -118607,7 +118943,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L480", + "source_location": "L534", "weight": 1.0 }, { @@ -118617,7 +118953,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L483", + "source_location": "L537", "weight": 1.0 }, { @@ -118627,7 +118963,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L483", + "source_location": "L537", "weight": 1.0 }, { @@ -118637,7 +118973,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L601", + "source_location": "L655", "weight": 1.0 }, { @@ -118647,7 +118983,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L610", + "source_location": "L664", "weight": 1.0 }, { @@ -118657,7 +118993,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L630", + "source_location": "L684", "weight": 1.0 }, { @@ -118667,7 +119003,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_release_review.py", - "source_location": "L808", + "source_location": "L862", "weight": 1.0 }, { @@ -135957,7 +136293,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L51", + "source_location": "L52", "weight": 1.0 }, { @@ -135967,7 +136303,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L63", + "source_location": "L65", "weight": 1.0 }, { @@ -135977,7 +136313,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L65", + "source_location": "L67", "weight": 1.0 }, { @@ -135987,7 +136323,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L65", + "source_location": "L67", "weight": 1.0 }, { @@ -135997,7 +136333,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L78", + "source_location": "L80", "weight": 1.0 }, { @@ -136007,7 +136343,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L80", + "source_location": "L82", "weight": 1.0 }, { @@ -136017,7 +136353,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L81", + "source_location": "L83", "weight": 1.0 }, { @@ -136027,7 +136363,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L83", + "source_location": "L85", "weight": 1.0 }, { @@ -136037,7 +136373,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L98", + "source_location": "L100", "weight": 1.0 }, { @@ -136047,7 +136383,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L108", + "source_location": "L110", "weight": 1.0 }, { @@ -136057,7 +136393,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L108", + "source_location": "L110", "weight": 1.0 }, { @@ -136067,7 +136403,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L110", + "source_location": "L112", "weight": 1.0 }, { @@ -136077,7 +136413,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L110", + "source_location": "L112", "weight": 1.0 }, { @@ -136087,7 +136423,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L126", + "source_location": "L128", "weight": 1.0 }, { @@ -136097,7 +136433,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L136", + "source_location": "L138", "weight": 1.0 }, { @@ -136107,7 +136443,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L138", + "source_location": "L140", "weight": 1.0 }, { @@ -136117,7 +136453,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L138", + "source_location": "L140", "weight": 1.0 }, { @@ -136127,7 +136463,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L154", + "source_location": "L156", "weight": 1.0 }, { @@ -136137,7 +136473,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L161", + "source_location": "L163", "weight": 1.0 }, { @@ -136147,7 +136483,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L161", + "source_location": "L163", "weight": 1.0 }, { @@ -136157,7 +136493,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L163", + "source_location": "L165", "weight": 1.0 }, { @@ -136167,7 +136503,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L163", + "source_location": "L165", "weight": 1.0 }, { @@ -136177,7 +136513,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L186", + "source_location": "L188", "weight": 1.0 }, { @@ -136187,7 +136523,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L188", + "source_location": "L190", "weight": 1.0 }, { @@ -136197,7 +136533,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/storage_release_review.py", - "source_location": "L188", + "source_location": "L190", "weight": 1.0 }, { diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 1391e547..8ab976d3 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,11 +1,11 @@ # Graph Report - app (2026-07-16) ## Corpus Check -- Large corpus: 219 files · ~265,741 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. +- Large corpus: 219 files · ~265,871 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. ## Summary -- 4530 nodes · 12955 edges · 57 communities detected -- Extraction: 60% EXTRACTED · 40% INFERRED · 0% AMBIGUOUS · INFERRED: 5182 edges (avg confidence: 0.8) +- 4534 nodes · 12989 edges · 52 communities detected +- Extraction: 60% EXTRACTED · 40% INFERRED · 0% AMBIGUOUS · INFERRED: 5210 edges (avg confidence: 0.8) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) @@ -55,17 +55,12 @@ - [[_COMMUNITY_Community 43|Community 43]] - [[_COMMUNITY_Community 44|Community 44]] - [[_COMMUNITY_Community 45|Community 45]] -- [[_COMMUNITY_Community 46|Community 46]] -- [[_COMMUNITY_Community 47|Community 47]] - [[_COMMUNITY_Community 48|Community 48]] - [[_COMMUNITY_Community 49|Community 49]] - [[_COMMUNITY_Community 50|Community 50]] +- [[_COMMUNITY_Community 51|Community 51]] +- [[_COMMUNITY_Community 52|Community 52]] - [[_COMMUNITY_Community 53|Community 53]] -- [[_COMMUNITY_Community 54|Community 54]] -- [[_COMMUNITY_Community 55|Community 55]] -- [[_COMMUNITY_Community 56|Community 56]] -- [[_COMMUNITY_Community 57|Community 57]] -- [[_COMMUNITY_Community 58|Community 58]] ## God Nodes (most connected - your core abstractions) 1. `success_response()` - 677 edges @@ -95,119 +90,119 @@ ### Community 0 - "Community 0" Cohesion: 0.01 -Nodes (697): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu() (+689 more) +Nodes (669): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+661 more) ### Community 1 - "Community 1" -Cohesion: 0.0 -Nodes (586): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+578 more) +Cohesion: 0.01 +Nodes (590): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+582 more) ### Community 2 - "Community 2" Cohesion: 0.01 -Nodes (318): get_role_data_scope(), get_role_menus(), Base, create_access_log(), create_collection_region(), create_consumable_pack(), get_consumable_pack(), get_pack_detail() (+310 more) +Nodes (323): Base, create_access_log(), create_collection_region(), create_consumable_pack(), get_consumable_pack(), get_pack_detail(), _item_row_to_dict(), list_all_packs() (+315 more) ### Community 3 - "Community 3" Cohesion: 0.01 -Nodes (272): _normalize_date_bound(), AuditCreateBody, BatchDetailIdsBody, BatchRefundFinanceSubmitBody, complete_protocol_invoice_request(), create_collection_protocol(), delete_collection_protocol(), _ensure_customer_for_mother() (+264 more) +Nodes (272): list_tenants(), list_users(), _normalize_date_bound(), AuditCreateBody, BatchDetailIdsBody, BatchRefundFinanceSubmitBody, complete_protocol_invoice_request(), create_collection_protocol() (+264 more) ### Community 4 - "Community 4" Cohesion: 0.02 -Nodes (210): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+202 more) +Nodes (212): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), build_void_type_label_map(), format_protocol_status_label() (+204 more) ### Community 5 - "Community 5" Cohesion: 0.02 -Nodes (211): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), build_void_type_label_map(), format_protocol_status_label() (+203 more) +Nodes (198): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+190 more) ### Community 6 - "Community 6" Cohesion: 0.02 -Nodes (196): list_access_logs(), list_uv_disinfect_logs(), ApiRequestLogCRUD, delete(), get_multi_with_filters(), _access_log_to_dict(), _calc_duration_minutes(), create_clean_room() (+188 more) +Nodes (146): delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave(), update_leave(), list_access_logs() (+138 more) ### Community 7 - "Community 7" -Cohesion: 0.03 -Nodes (181): _batch_line_to_dict(), cancel_check(), _check_header_to_dict(), complete_check(), _get_check(), get_check_detail(), _line_counts(), list_checks() (+173 more) +Cohesion: 0.02 +Nodes (167): get_channel_service_order_detail(), list_service_order_txns(), activate_channel_agreement(), _apply_gmcp_order_quotas(), _apply_purchase_txn_holdings(), _apply_unsubscribe_txn_holdings(), _batch_gmcp_current_holding_amounts(), _batch_gmcp_purchase_totals() (+159 more) ### Community 8 - "Community 8" -Cohesion: 0.02 -Nodes (151): batch_review(), _get_current_user_id(), get_outbound_release_materials(), get_pilot_release_review_detail(), _get_tenant_no(), list_pilot_release_reviews(), save_outbound_release_materials(), submit_single_review() (+143 more) +Cohesion: 0.03 +Nodes (161): _batch_line_to_dict(), cancel_check(), _check_header_to_dict(), complete_check(), _get_check(), get_check_detail(), _line_counts(), list_checks() (+153 more) ### Community 9 - "Community 9" -Cohesion: 0.03 -Nodes (135): _body_to_payload(), _get_current_user_id(), get_production_reception_by_sample_code(), get_production_reception_detail(), _get_tenant_no(), post_production_reception(), ProductionReceptionBody, put_production_reception() (+127 more) +Cohesion: 0.02 +Nodes (130): get_role_data_scope(), get_role_menus(), list_role_management(), api_get_checkup_detail(), api_list_actual_items(), api_list_checkups(), api_list_pending_patients(), api_list_reserve_items() (+122 more) ### Community 10 - "Community 10" Cohesion: 0.03 -Nodes (134): list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3, 根据用户角色的数据权限过滤查询。 Args: query: SQLAlchemy query 对象 model: 查询, 从 SysUser 读取用户的 dept_id。, 递归获取 dept_id 及其所有子部门 ID(含自身)。 (+126 more) +Nodes (134): dict_data_options(), api_save_application(), api_detail(), api_list(), ProductItemBody, UpdateQcStatusBody, UpdateScheduleBody, UpdateStatusBody (+126 more) ### Community 11 - "Community 11" Cohesion: 0.03 -Nodes (97): list_roles_for_select(), 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, _avatar_url_field(), _build_user_info_payload(), change_current_user_password(), get_web_auth_menu_codes(), _jwt_user_payload(), logout() (+89 more) +Nodes (118): _body_to_payload(), _get_current_user_id(), get_production_reception_by_sample_code(), get_production_reception_detail(), _get_tenant_no(), post_production_reception(), ProductionReceptionBody, put_production_reception() (+110 more) ### Community 12 - "Community 12" -Cohesion: 0.04 -Nodes (91): get_next_cell_product_code(), _ancestor_link_from_cell_product_input(), _ancestor_sample_chain_link(), _apply_cell_product_status_change(), _build_ancestor_chain(), _build_descendant_chain(), _build_facility_path_label(), build_split_product_codes() (+83 more) +Cohesion: 0.03 +Nodes (112): get_user_by_id(), list_post_bound_users(), list_roles_for_select(), 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, _avatar_url_field(), _build_current_user_payload(), _build_user_info_payload(), change_current_user_password() (+104 more) ### Community 13 - "Community 13" -Cohesion: 0.04 -Nodes (41): _error_json(), lifespan(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), extract_avatar_storage_key(), 用户头像 URL 解析(sys_user.avatar 可能存 MinIO 相对路径或完整 URL) (+33 more) +Cohesion: 0.03 +Nodes (100): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, create_collection_region(), CustomerCreateBody, CustomerUpdateBody, delete_cell_sample_type() (+92 more) ### Community 14 - "Community 14" Cohesion: 0.04 -Nodes (66): delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave(), update_leave(), _business_type_label() (+58 more) +Nodes (91): get_next_cell_product_code(), _ancestor_link_from_cell_product_input(), _ancestor_sample_chain_link(), _apply_cell_product_status_change(), _build_ancestor_chain(), _build_descendant_chain(), _build_facility_path_label(), build_split_product_codes() (+83 more) ### Community 15 - "Community 15" Cohesion: 0.04 -Nodes (79): AuditSubmitBody, BatchDeleteBody, ConvertFromStorageBody, DonationCreateBody, DonationUpdateBody, list_research_donation_audits(), list_research_donations(), next_research_donation_sample_code() (+71 more) +Nodes (41): _error_json(), lifespan(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), extract_avatar_storage_key(), 用户头像 URL 解析(sys_user.avatar 可能存 MinIO 相对路径或完整 URL) (+33 more) ### Community 16 - "Community 16" -Cohesion: 0.05 -Nodes (79): api_list_applications(), api_save_application(), auto_create_payment(), 输注计划创建时自动调用,生成 dfj 缴费记录, auto_generate_schedules(), complete_application(), create_application(), create_basic_experiment_sale_schedules() (+71 more) +Cohesion: 0.04 +Nodes (80): AuditSubmitBody, BatchDeleteBody, ConvertFromStorageBody, DonationCreateBody, DonationUpdateBody, list_research_donation_audits(), list_research_donations(), next_research_donation_sample_code() (+72 more) ### Community 17 - "Community 17" Cohesion: 0.05 -Nodes (72): list_storage_slot_select_options(), list_storage_slot_stats(), list_storage_slots(), 各叶子节点格子占用/总数统计(单次聚合,替代逐节点拉全量格子列表)。, aggregate_slot_stats_by_facility(), _apply_slot_select_base_filters(), _apply_slot_select_query_filters(), batch_create_slots() (+64 more) +Nodes (72): list_storage_slot_stats(), list_storage_slots(), 各叶子节点格子占用/总数统计(单次聚合,替代逐节点拉全量格子列表)。, aggregate_slot_stats_by_facility(), _apply_slot_select_base_filters(), _apply_slot_select_query_filters(), batch_create_slots(), _build_node_path_cache() (+64 more) ### Community 18 - "Community 18" Cohesion: 0.06 -Nodes (64): batch_delete_cleanroom_garments(), batch_discard_cleanroom_garments(), create_cleanroom_garment(), create_sterilize_log(), create_wash_log(), delete_cleanroom_garment(), delete_sterilize_log(), delete_wash_log() (+56 more) +Nodes (69): batch_stock_in(), batch_stock_out(), code_exists(), create_material(), _dec(), _filter_material_type(), _fmt_dt(), get_material() (+61 more) ### Community 19 - "Community 19" Cohesion: 0.05 -Nodes (43): BaseHTTPMiddleware, parse_admin_request_json(), 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, ApiCryptoError, _b64url_decode(), _b64url_encode(), decrypt_json() (+35 more) +Nodes (65): 从生产任务创建临时生产工单,并返回待复制到新任务的原材料载荷(不含产出)。, spawn_temporary_work_order_from_task(), _accept_conclusion_label(), apply_planned_start_time_step_filter(), _attach_outbound_detail(), _attach_reception_detail(), complete_production_work_order(), configure_temp_production_work_order() (+57 more) ### Community 20 - "Community 20" +Cohesion: 0.05 +Nodes (41): BaseHTTPMiddleware, parse_admin_request_json(), 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, ApiCryptoError, _b64url_decode(), _b64url_encode(), decrypt_json() (+33 more) + +### Community 21 - "Community 21" Cohesion: 0.08 Nodes (51): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), get_my_usages(), _is_enabled_status() (+43 more) -### Community 21 - "Community 21" -Cohesion: 0.07 -Nodes (48): _production_conclusion_label(), 从生产任务创建临时生产工单,并返回待复制到新任务的原材料载荷(不含产出)。, spawn_temporary_work_order_from_task(), _accept_conclusion_label(), apply_planned_start_time_step_filter(), _attach_outbound_detail(), _attach_reception_detail(), complete_production_work_order() (+40 more) - ### Community 22 - "Community 22" -Cohesion: 0.08 -Nodes (42): create_env_detect_item(), create_env_detect_record(), delete_env_detect_item(), delete_env_detect_record(), EnvDetectItemBody, EnvDetectItemUpdateBody, EnvDetectRecordBody, EnvDetectRecordUpdateBody (+34 more) +Cohesion: 0.11 +Nodes (36): batch_create_sterilize_logs(), batch_create_wash_logs(), batch_discard_garments(), batch_soft_delete_garments(), _count_map(), create_garment(), create_sterilize_log(), create_wash_log() (+28 more) ### Community 23 - "Community 23" +Cohesion: 0.11 +Nodes (37): _amount_for_row(), _batch_map(), deduct_for_task(), _display_remark(), _fmt_date_val(), _linked_qc_task_no_map(), list_linked_task_usages(), list_my_usages() (+29 more) + +### Community 24 - "Community 24" Cohesion: 0.1 Nodes (32): generate_sms(), _get_current_user_id(), _get_tenant_no(), list_notifications(), _page_payload(), toggle_status(), ToggleStatusBody, generate_sms() (+24 more) -### Community 24 - "Community 24" +### Community 25 - "Community 25" Cohesion: 0.12 Nodes (11): get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.html, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total_amo, 申请退款 Args: out_trade_no: 商户订单号 total_amount: 订单, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 total_f, 生成签名 V3 (SHA256 with RSA) (+3 more) -### Community 25 - "Community 25" -Cohesion: 0.16 -Nodes (20): company_code_exists(), create_company(), get_company(), list_companies(), list_company_options(), _row_to_dict(), soft_delete_company(), update_company() (+12 more) - ### Community 26 - "Community 26" -Cohesion: 0.14 -Nodes (20): list_protocol_nos(), get_protocol_nos_used_in_protocols(), batch_generate_protocol_nos(), batch_issue_protocol_nos(), batch_revoke_protocol_nos(), create_protocol_no(), enrich_issued_user_names(), get_protocol_no() (+12 more) +Cohesion: 0.15 +Nodes (23): batch_review(), _get_current_user_id(), get_outbound_release_materials(), get_pilot_release_review_detail(), _get_tenant_no(), list_pilot_release_reviews(), save_outbound_release_materials(), submit_single_review() (+15 more) ### Community 27 - "Community 27" -Cohesion: 0.16 -Nodes (18): delete_hospital(), list_collection_regions(), search_collection_hospitals(), create_hospital(), get_collection_region(), get_hospital(), _hospital_names_by_region_ids(), _hospital_to_dict() (+10 more) +Cohesion: 0.18 +Nodes (19): api_confirm(), api_create(), api_delete(), api_detail(), api_list(), api_update(), ConfirmCreateBody, ConfirmUpdateBody (+11 more) ### Community 28 - "Community 28" Cohesion: 0.22 -Nodes (14): batch_generate_sample_codes(), batch_issue_sample_codes(), batch_revoke_sample_codes(), create_sample_code(), get_sample_code(), list_sample_codes(), _parse_issued_time(), 样本编码池 CRUD(biz_sample_code) (+6 more) +Nodes (18): _apply_qc_status_filter(), _base_query(), _derive_qc_conclusion(), _ensure_notification(), _eq_ci(), _fetch_completed_tasks(), _fmt_dt(), generate_sms_content() (+10 more) ### Community 29 - "Community 29" Cohesion: 0.27 @@ -219,145 +214,125 @@ Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 ### Community 31 - "Community 31" Cohesion: 0.24 -Nodes (12): appointment_no_exists(), create_exhibition_appointment(), _format_visit_date(), _generate_appointment_no(), get_exhibition_appointment(), list_exhibition_appointments(), 展览预约 CRUD(biz_exhibition_appointment), 生成预约编号:YYYYMMDD + 6位序号(如 20260515000001) (+4 more) +Nodes (12): list_depts(), _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree() (+4 more) ### Community 32 - "Community 32" Cohesion: 0.24 -Nodes (10): create_cell_sample_type(), get_cell_sample_type(), list_cell_sample_types(), 细胞样本类型 CRUD(biz_cell_sample_type), _row_to_dict(), soft_delete_cell_sample_type(), type_code_exists(), update_cell_sample_type() (+2 more) +Nodes (12): appointment_no_exists(), create_exhibition_appointment(), _format_visit_date(), _generate_appointment_no(), get_exhibition_appointment(), list_exhibition_appointments(), 展览预约 CRUD(biz_exhibition_appointment), 生成预约编号:YYYYMMDD + 6位序号(如 20260515000001) (+4 more) ### Community 33 - "Community 33" -Cohesion: 0.27 -Nodes (11): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), 保留匹配节点及其全部上级,供关键词检索后仍能正确组树。 (+3 more) +Cohesion: 0.26 +Nodes (10): list_menus(), _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), _row_to_dict() (+2 more) ### Community 34 - "Community 34" -Cohesion: 0.29 -Nodes (9): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), _row_to_dict(), soft_delete_menu() (+1 more) +Cohesion: 0.32 +Nodes (11): create_env_detect_record(), _generate_record_no(), get_env_detect_record(), _join_csv(), list_env_detect_records(), _resolve_inspector_snapshots(), _resolve_item_snapshot(), _row_to_dict() (+3 more) ### Community 35 - "Community 35" -Cohesion: 0.27 -Nodes (8): create_customer(), get_customer(), id_card_taken(), list_customers(), 客户 CRUD(biz_customer), _row_to_dict(), soft_delete_customer(), update_customer() - -### Community 36 - "Community 36" -Cohesion: 0.31 -Nodes (9): _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), 试剂变动记录 CRUD(biz_reagent_stock_log), 撤销步骤此前 step_save 扣减,便于重新填报。, _resolve_receiver_purpose(), revert_step_stock_changes(), _row_to_dict() (+1 more) - -### Community 37 - "Community 37" -Cohesion: 0.31 -Nodes (8): create_express_company(), express_code_exists(), get_express_company(), list_express_companies(), 快递公司 CRUD(biz_express_company), _row_to_dict(), soft_delete_express_company(), update_express_company() - -### Community 38 - "Community 38" Cohesion: 0.38 Nodes (9): create_check_item(), get_check_item(), item_code_exists(), list_active_check_items(), list_check_items(), _order_query(), _row_to_dict(), soft_delete_check_item() (+1 more) -### Community 39 - "Community 39" -Cohesion: 0.31 -Nodes (8): category_code_exists(), create_process_category(), get_process_category(), list_process_categories(), 工艺工序分类 CRUD(biz_process_category), _row_to_dict(), soft_delete_process_category(), update_process_category() +### Community 36 - "Community 36" +Cohesion: 0.38 +Nodes (9): create_env_detect_item(), get_env_detect_item(), item_code_exists(), list_active_env_detect_items(), list_env_detect_items(), _order_query(), _row_to_dict(), soft_delete_env_detect_item() (+1 more) -### Community 40 - "Community 40" +### Community 37 - "Community 37" Cohesion: 0.31 Nodes (8): create_item_unit(), get_item_unit(), list_item_units(), 物品单位 CRUD(biz_item_unit), _row_to_dict(), soft_delete_item_unit(), unit_code_exists(), update_item_unit() -### Community 41 - "Community 41" +### Community 38 - "Community 38" Cohesion: 0.31 Nodes (8): create_output_type(), get_output_type(), list_output_types(), 工艺产出物类型 CRUD(biz_output_type), _row_to_dict(), soft_delete_output_type(), type_code_exists(), update_output_type() -### Community 42 - "Community 42" -Cohesion: 0.36 -Nodes (7): create_tenant(), get_tenant(), list_tenants(), _row_to_dict(), soft_delete_tenant(), tenant_no_exists(), update_tenant() - -### Community 43 - "Community 43" -Cohesion: 0.36 -Nodes (7): create_site(), get_site(), list_sites(), _row_to_dict(), site_code_exists(), soft_delete_site(), update_site() - -### Community 44 - "Community 44" +### Community 39 - "Community 39" Cohesion: 0.38 Nodes (6): derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal() -### Community 45 - "Community 45" +### Community 40 - "Community 40" Cohesion: 0.5 Nodes (3): BaseSettings, Config, Settings -### Community 46 - "Community 46" +### Community 41 - "Community 41" Cohesion: 0.5 Nodes (2): _auto_fill_create_dept_id(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID -### Community 47 - "Community 47" +### Community 42 - "Community 42" Cohesion: 0.67 Nodes (2): get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组) -### Community 48 - "Community 48" +### Community 43 - "Community 43" Cohesion: 1.0 Nodes (1): 质检物料金额查看授权:专用角色与菜单权限常量。 -### Community 49 - "Community 49" +### Community 44 - "Community 44" Cohesion: 1.0 Nodes (1): 请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传 -### Community 50 - "Community 50" +### Community 45 - "Community 45" Cohesion: 1.0 Nodes (1): API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位) -### Community 53 - "Community 53" +### Community 48 - "Community 48" Cohesion: 1.0 Nodes (1): 发送订单状态通知 Args: openid: 用户openid order_n -### Community 54 - "Community 54" +### Community 49 - "Community 49" Cohesion: 1.0 Nodes (1): 发送支付成功通知 Args: openid: 用户openid order_n -### Community 55 - "Community 55" +### Community 50 - "Community 50" Cohesion: 1.0 Nodes (1): 发送配送通知 Args: openid: 配送员openid task_no: -### Community 56 - "Community 56" +### Community 51 - "Community 51" Cohesion: 1.0 Nodes (1): 发送配送时效预警 Args: openid: 配送员openid task_n -### Community 57 - "Community 57" +### Community 52 - "Community 52" Cohesion: 1.0 Nodes (1): 发送退款结果通知 Args: openid: 用户openid order_n -### Community 58 - "Community 58" +### Community 53 - "Community 53" Cohesion: 1.0 Nodes (1): 发送催单通知给配送员 Args: deliver_openid: 配送员openid ## Knowledge Gaps - **650 isolated node(s):** `数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误`, `未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin`, `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)` (+645 more) These have ≤1 connection - possible missing edges or undocumented components. -- **Thin community `Community 46`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID`, `database.py` +- **Thin community `Community 41`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID`, `database.py` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 47`** (3 nodes): `get_menu_list()`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)`, `menu.py` +- **Thin community `Community 42`** (3 nodes): `get_menu_list()`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)`, `menu.py` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 48`** (2 nodes): `质检物料金额查看授权:专用角色与菜单权限常量。`, `qc_material_amount_auth_constants.py` +- **Thin community `Community 43`** (2 nodes): `质检物料金额查看授权:专用角色与菜单权限常量。`, `qc_material_amount_auth_constants.py` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 49`** (2 nodes): `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传`, `context.py` +- **Thin community `Community 44`** (2 nodes): `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传`, `context.py` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 50`** (2 nodes): `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)`, `__init__.py` +- **Thin community `Community 45`** (2 nodes): `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)`, `__init__.py` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 53`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid order_n` +- **Thin community `Community 48`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid order_n` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 54`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid order_n` +- **Thin community `Community 49`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid order_n` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 55`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task_no:` +- **Thin community `Community 50`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task_no:` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 56`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid task_n` +- **Thin community `Community 51`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid task_n` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 57`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid order_n` +- **Thin community `Community 52`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid order_n` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 58`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid` +- **Thin community `Community 53`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid` Too small to be a meaningful cluster - may be noise or needs more connections extracted. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `generate_uuid()` connect `Community 4` to `Community 0`, `Community 2`, `Community 3`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 22`, `Community 23`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 37`, `Community 38`, `Community 39`, `Community 40`, `Community 41`, `Community 42`, `Community 43`?** - _High betweenness centrality (0.135) - this node is a cross-community bridge._ -- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 2`, `Community 3`, `Community 6`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 22`, `Community 23`, `Community 26`, `Community 27`, `Community 47`?** - _High betweenness centrality (0.067) - this node is a cross-community bridge._ -- **Why does `list_production_work_orders()` connect `Community 0` to `Community 1`?** - _High betweenness centrality (0.042) - this node is a cross-community bridge._ -- **Are the 746 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?** - _`str` has 746 INFERRED edges - model-reasoned connections that need verification._ +- **Why does `generate_uuid()` connect `Community 5` to `Community 0`, `Community 2`, `Community 3`, `Community 4`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 22`, `Community 23`, `Community 24`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`, `Community 38`?** + _High betweenness centrality (0.142) - this node is a cross-community bridge._ +- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 33`, `Community 3`, `Community 6`, `Community 7`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 42`, `Community 14`, `Community 16`, `Community 17`, `Community 24`, `Community 26`, `Community 27`, `Community 31`?** + _High betweenness centrality (0.058) - this node is a cross-community bridge._ +- **Why does `list_production_work_orders()` connect `Community 0` to `Community 1`, `Community 3`?** + _High betweenness centrality (0.039) - this node is a cross-community bridge._ +- **Are the 747 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?** + _`str` has 747 INFERRED edges - model-reasoned connections that need verification._ - **Are the 676 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?** _`success_response()` has 676 INFERRED edges - model-reasoned connections that need verification._ - **Are the 560 inferred relationships involving `error_response()` (e.g. with `_json_error_response()` and `list_storage_release_reviews()`) actually correct?** diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 67c52704..800d31ce 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -57,12 +57,12 @@
-
4530 nodes · 12955 edges · 63 communities
+
4534 nodes · 12989 edges · 58 communities