diff --git a/backend/app.pid b/backend/app.pid index e4c04f7b..924e5ac5 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -17799 +29565 diff --git a/backend/app/api/public.py b/backend/app/api/public.py index 818ecda9..92d09704 100644 --- a/backend/app/api/public.py +++ b/backend/app/api/public.py @@ -30,6 +30,7 @@ from app.crud.user import user_crud from app.core.utils import generate_uuid from app.core import login_crypto from app.services.web_auth_roles import ( + get_user_role_names, iter_user_menu_perm_codes, resolve_web_role_for_user, user_has_active_roles, @@ -49,7 +50,7 @@ def _avatar_url_field(user: SysUser) -> Optional[str]: return s if s else None -def _build_user_info_payload(user: SysUser, web_role: str) -> dict: +def _build_user_info_payload(user: SysUser, web_role: str, role_names: list = None) -> dict: """与 web-admin `userInfo` 字段约定一致。""" phone = (getattr(user, "phone_no", None) or "").strip() or None return { @@ -61,6 +62,7 @@ def _build_user_info_payload(user: SysUser, web_role: str) -> dict: "sex": getattr(user, "sex", None) or "0", "remark": (getattr(user, "remark", None) or "").strip() or None, "role": web_role, + "roleNames": role_names or [], "regionId": user.dept_id, "regionName": None, "avatarUrl": _avatar_url_field(user), @@ -80,6 +82,7 @@ def _build_current_user_payload(current_user: dict) -> dict: "sex": current_user.get("sex") or "0", "remark": current_user.get("remark"), "role": current_user.get("role"), + "roleNames": current_user.get("role_names") or current_user.get("roleNames") or [], "isSuperAdmin": current_user.get("role") == "super_admin", "regionId": current_user.get("region_id"), "regionName": None, @@ -142,6 +145,7 @@ async def web_login( return error_response(403, "账号未分配角色,请联系管理员") web_role = resolve_web_role_for_user(db, user.id) + role_names = get_user_role_names(db, user.id) session_id = generate_uuid() access_jti = generate_uuid() @@ -170,7 +174,7 @@ async def web_login( "token": access_token, "refreshToken": refresh_token, "expiresIn": settings.ACCESS_TOKEN_EXPIRE_MINUTES * 60, - "userInfo": _build_user_info_payload(user, web_role), + "userInfo": _build_user_info_payload(user, web_role, role_names), } ) @@ -295,7 +299,8 @@ async def update_current_user_profile( if not user: return error_response(404, "用户不存在") web_role = resolve_web_role_for_user(db, user.id) - return success_response(_build_user_info_payload(user, web_role)) + role_names = get_user_role_names(db, user.id) + return success_response(_build_user_info_payload(user, web_role, role_names)) except HTTPException: return error_response(401, "Token无效或已过期") except ValueError as exc: diff --git a/backend/app/api/qc.py b/backend/app/api/qc.py index 467a97fe..e416e123 100644 --- a/backend/app/api/qc.py +++ b/backend/app/api/qc.py @@ -15,7 +15,11 @@ from app.core.menu_guard import ( require_admin_or_super_admin, require_any_menu_code, require_menu_code, + strip_row_fields, + user_has_menu_perm, ) + +MY_QC_MATERIAL_USAGE_VIEW_AMOUNT_PERM = "biz:myQcMaterialUsage:viewAmount" from app.core.response import error_response, success_response from app.core.utils import parse_datetime from app.crud import qc_lab_test_item as lab_svc @@ -1693,6 +1697,8 @@ async def list_my_qc_material_usages( keyword=keyword, stock_in_no=stockInNo, ) + if not user_has_menu_perm(db, user, MY_QC_MATERIAL_USAGE_VIEW_AMOUNT_PERM): + strip_row_fields(items, "unitPrice", "amount") return success_response(_page_payload(items, total, page, pageSize)) except PermissionError as e: return error_response(403, str(e)) diff --git a/backend/app/core/auth.py b/backend/app/core/auth.py index 9d462c54..e0fc9970 100644 --- a/backend/app/core/auth.py +++ b/backend/app/core/auth.py @@ -16,7 +16,7 @@ from app.core.config import settings from app.core.database import get_db from app.crud.user import user_crud from app.core.utils import generate_uuid -from app.services.web_auth_roles import resolve_web_role_for_user +from app.services.web_auth_roles import get_user_role_names, resolve_web_role_for_user oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/public/login") @@ -222,6 +222,7 @@ async def get_current_user_by_token( ) web_role = resolve_web_role_for_user(db, user.id) + role_names = get_user_role_names(db, user.id) phone = (getattr(user, "phone_no", None) or "").strip() or None email = (getattr(user, "email", None) or "").strip() or None @@ -238,6 +239,7 @@ async def get_current_user_by_token( "username": user.user_no, "real_name": user.nick_name, "role": web_role, + "role_names": role_names, "region_id": user.dept_id, "phone": phone, "email": email, diff --git a/backend/app/core/menu_guard.py b/backend/app/core/menu_guard.py index 12959f6d..e62ff447 100644 --- a/backend/app/core/menu_guard.py +++ b/backend/app/core/menu_guard.py @@ -1,11 +1,10 @@ """菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms)""" -from typing import Callable, Set +from typing import Any, Callable, Dict, Iterable, Set from fastapi import Depends, HTTPException from sqlalchemy.orm import Session from app.core.auth import get_current_user -from app.core.database import get_db from app.services.web_auth_roles import iter_user_menu_perm_codes ADMIN_ROLES = {"admin", "super_admin"} @@ -25,39 +24,36 @@ def get_user_menu_codes(db: Session, user_id: str) -> Set[str]: return iter_user_menu_perm_codes(db, user_id or "") +def user_has_menu_perm(db: Session, user: dict, perm_code: str) -> bool: + """判断用户是否拥有指定权限码(不拦截请求,用于字段/按钮级能力控制)。""" + code = (perm_code or "").strip() + if not code: + return False + if user.get("role") == SUPER_ADMIN_ROLE: + return True + user_id = (user.get("user_id") or "").strip() + if not user_id: + return False + return code in get_user_menu_codes(db, user_id) + + +def strip_row_fields(rows: Iterable[Dict[str, Any]], *field_names: str) -> None: + """从响应行中移除敏感字段(原地修改)。""" + keys = [k for k in field_names if k] + if not keys: + return + for row in rows: + for key in keys: + row.pop(key, None) + + def require_menu_code(menu_code: str) -> Callable: - """接口菜单权限守卫。super_admin 直接放行。""" - normalized = (menu_code or "").strip() - - def _dep( - current_user: dict = Depends(require_admin_or_super_admin), - db: Session = Depends(get_db), - ): - role = current_user.get("role") - if role == SUPER_ADMIN_ROLE: - return current_user - codes = get_user_menu_codes(db, current_user.get("user_id")) - if normalized not in codes: - raise HTTPException(status_code=403, detail="无菜单访问权限") - return current_user - - return _dep + """接口菜单权限守卫(已统一放行 menuCode 校验,仅保留运营端登录)。""" + _ = menu_code # 保留参数以兼容各路由 Depends(require_menu_code("...")) + return require_admin_or_super_admin def require_any_menu_code(*menu_codes: str) -> Callable: - """接口菜单权限守卫:拥有任一 menuCode 即可访问。super_admin 直接放行。""" - normalized = {(code or "").strip() for code in menu_codes if (code or "").strip()} - - def _dep( - current_user: dict = Depends(require_admin_or_super_admin), - db: Session = Depends(get_db), - ): - role = current_user.get("role") - if role == SUPER_ADMIN_ROLE: - return current_user - codes = get_user_menu_codes(db, current_user.get("user_id")) - if not normalized.intersection(codes): - raise HTTPException(status_code=403, detail="无菜单访问权限") - return current_user - - return _dep + """接口菜单权限守卫(已统一放行 menuCode 校验,仅保留运营端登录)。""" + _ = menu_codes + return require_admin_or_super_admin diff --git a/backend/app/graphify-out/cache/ast/4cd9161ba58c4e045b6221dd150ca5c19d4515df665701a283035a987eb15e47.json b/backend/app/graphify-out/cache/ast/4cd9161ba58c4e045b6221dd150ca5c19d4515df665701a283035a987eb15e47.json new file mode 100644 index 00000000..fed60f51 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/4cd9161ba58c4e045b6221dd150ca5c19d4515df665701a283035a987eb15e47.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "label": "web_auth_roles.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L1"}, {"id": "services_web_auth_roles_map_role_name_to_web", "label": "_map_role_name_to_web()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L19"}, {"id": "services_web_auth_roles_active_role_name_rows", "label": "_active_role_name_rows()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L31"}, {"id": "services_web_auth_roles_user_has_active_roles", "label": "user_has_active_roles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L53"}, {"id": "services_web_auth_roles_resolve_web_role_for_user", "label": "resolve_web_role_for_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L58"}, {"id": "services_web_auth_roles_iter_user_menu_perm_codes", "label": "iter_user_menu_perm_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L69"}, {"id": "services_web_auth_roles_rationale_1", "label": "Web \u7ba1\u7406\u7aef\u767b\u5f55\uff1a\u57fa\u4e8e V0.3 sys_user / sys_user_role / sys_role \u7684\u89d2\u8272\u4e0e\u83dc\u5355\u6743\u9650\u89e3\u6790", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L1"}, {"id": "services_web_auth_roles_rationale_20", "label": "\u5c06 sys_role.role_name \u6620\u5c04\u4e3a web-admin \u4f7f\u7528\u7684 role \u5b57\u7b26\u4e32\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L20"}, {"id": "services_web_auth_roles_rationale_32", "label": "\u67e5\u8be2\u7528\u6237\u5f53\u524d\u6709\u6548\u7684 sys_role.role_name \u5217\u8868\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L32"}, {"id": "services_web_auth_roles_rationale_54", "label": "\u7528\u6237\u662f\u5426\u81f3\u5c11\u7ed1\u5b9a\u4e00\u4e2a\u6709\u6548\u89d2\u8272\uff08sys_user_role \u2192 sys_role\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L54"}, {"id": "services_web_auth_roles_rationale_59", "label": "\u6839\u636e\u7528\u6237\u5173\u8054\u89d2\u8272\u89e3\u6790 Web \u7aef role\uff08admin / super_admin / guest\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L59"}, {"id": "services_web_auth_roles_rationale_70", "label": "\u7528\u6237\u901a\u8fc7\u89d2\u8272\u5173\u8054\u5f97\u5230\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\uff08sys_menu.perms\uff0c\u7a7a\u5219\u9000\u56de\u83dc\u5355 id\uff09\u3002 \u6ce8\uff1a\u4e0d\u8fc7\u6ee4 visible\u2014\u2014F \u7c7b\u578b\u6309\u94ae\u7b49 visible", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L70"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_map_role_name_to_web", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_active_role_name_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_user_has_active_roles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_resolve_web_role_for_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_iter_user_menu_perm_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L69", "weight": 1.0}, {"source": "services_web_auth_roles_user_has_active_roles", "target": "services_web_auth_roles_active_role_name_rows", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L55", "weight": 1.0}, {"source": "services_web_auth_roles_resolve_web_role_for_user", "target": "services_web_auth_roles_active_role_name_rows", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L60", "weight": 1.0}, {"source": "services_web_auth_roles_resolve_web_role_for_user", "target": "services_web_auth_roles_map_role_name_to_web", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L63", "weight": 1.0}, {"source": "services_web_auth_roles_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L1", "weight": 1.0}, {"source": "services_web_auth_roles_rationale_20", "target": "services_web_auth_roles_map_role_name_to_web", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L20", "weight": 1.0}, {"source": "services_web_auth_roles_rationale_32", "target": "services_web_auth_roles_active_role_name_rows", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L32", "weight": 1.0}, {"source": "services_web_auth_roles_rationale_54", "target": "services_web_auth_roles_user_has_active_roles", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L54", "weight": 1.0}, {"source": "services_web_auth_roles_rationale_59", "target": "services_web_auth_roles_resolve_web_role_for_user", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L59", "weight": 1.0}, {"source": "services_web_auth_roles_rationale_70", "target": "services_web_auth_roles_iter_user_menu_perm_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L70", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_web_auth_roles_map_role_name_to_web", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L21"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L37"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L37"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L37"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L37"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L37"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L47"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L50"}, {"caller_nid": "services_web_auth_roles_active_role_name_rows", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L50"}, {"caller_nid": "services_web_auth_roles_user_has_active_roles", "callee": "bool", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L55"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L77"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "distinct", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L81"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L81"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L81"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L81"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L81"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L84"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L92"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L106"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L107"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L108"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L110"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L112"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L112"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L112"}, {"caller_nid": "services_web_auth_roles_iter_user_menu_perm_codes", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L115"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/7e8bab4466e75c8f3e7c2ce1eceaa834ca301a4e25a216db8c84df2d2c0e2c77.json b/backend/app/graphify-out/cache/ast/7e8bab4466e75c8f3e7c2ce1eceaa834ca301a4e25a216db8c84df2d2c0e2c77.json new file mode 100644 index 00000000..4297ee1f --- /dev/null +++ b/backend/app/graphify-out/cache/ast/7e8bab4466e75c8f3e7c2ce1eceaa834ca301a4e25a216db8c84df2d2c0e2c77.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "label": "menu_guard.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1"}, {"id": "core_menu_guard_require_admin_or_super_admin", "label": "require_admin_or_super_admin()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L14"}, {"id": "core_menu_guard_get_user_menu_codes", "label": "get_user_menu_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L22"}, {"id": "core_menu_guard_require_menu_code", "label": "require_menu_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L27"}, {"id": "core_menu_guard_require_any_menu_code", "label": "require_any_menu_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L33"}, {"id": "core_menu_guard_rationale_1", "label": "\u83dc\u5355 code \u6743\u9650\u5b88\u536b\uff08V0.3\uff1a\u901a\u8fc7 sys_user_role \u2192 sys_role_menu \u2192 sys_menu.perms\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1"}, {"id": "core_menu_guard_rationale_15", "label": "\u8fd0\u8425\u7aef\u89d2\u8272\u5b88\u536b\uff1aadmin / super_admin \u53ef\u8bbf\u95ee\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L15"}, {"id": "core_menu_guard_rationale_23", "label": "\u8bfb\u53d6\u7528\u6237\u6388\u6743\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\u96c6\u5408\uff08\u4e0e\u524d\u7aef meta.menuCode / perms \u5bf9\u9f50\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L23"}, {"id": "core_menu_guard_rationale_28", "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff08\u5df2\u7edf\u4e00\u653e\u884c menuCode \u6821\u9a8c\uff0c\u4ec5\u4fdd\u7559\u8fd0\u8425\u7aef\u767b\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L28"}, {"id": "core_menu_guard_rationale_34", "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff08\u5df2\u7edf\u4e00\u653e\u884c menuCode \u6821\u9a8c\uff0c\u4ec5\u4fdd\u7559\u8fd0\u8425\u7aef\u767b\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L34"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_core_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_get_user_menu_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_menu_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_any_menu_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L33", "weight": 1.0}, {"source": "core_menu_guard_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1", "weight": 1.0}, {"source": "core_menu_guard_rationale_15", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L15", "weight": 1.0}, {"source": "core_menu_guard_rationale_23", "target": "core_menu_guard_get_user_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L23", "weight": 1.0}, {"source": "core_menu_guard_rationale_28", "target": "core_menu_guard_require_menu_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L28", "weight": 1.0}, {"source": "core_menu_guard_rationale_34", "target": "core_menu_guard_require_any_menu_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L34", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_menu_guard_require_admin_or_super_admin", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L16"}, {"caller_nid": "core_menu_guard_require_admin_or_super_admin", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L18"}, {"caller_nid": "core_menu_guard_get_user_menu_codes", "callee": "iter_user_menu_perm_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L24"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/84f5e54ec4fbd4614fc5f35e8e83b59e2fabba50af3405e67771989d0ddc5179.json b/backend/app/graphify-out/cache/ast/84f5e54ec4fbd4614fc5f35e8e83b59e2fabba50af3405e67771989d0ddc5179.json new file mode 100644 index 00000000..a111d356 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/84f5e54ec4fbd4614fc5f35e8e83b59e2fabba50af3405e67771989d0ddc5179.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "label": "qc.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1"}, {"id": "api_qc_thirdpartycompanybody", "label": "ThirdPartyCompanyBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L48"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_qc_thirdpartycompanyupdatebody", "label": "ThirdPartyCompanyUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L66"}, {"id": "api_qc_list_qc_third_party_companies", "label": "list_qc_third_party_companies()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L85"}, {"id": "api_qc_list_qc_third_party_company_options", "label": "list_qc_third_party_company_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L107"}, {"id": "api_qc_create_qc_third_party_company", "label": "create_qc_third_party_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L121"}, {"id": "api_qc_update_qc_third_party_company", "label": "update_qc_third_party_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L156"}, {"id": "api_qc_delete_qc_third_party_company", "label": "delete_qc_third_party_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L193"}, {"id": "api_qc_thirdpartyitembody", "label": "ThirdPartyItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L213"}, {"id": "api_qc_thirdpartyitemupdatebody", "label": "ThirdPartyItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L225"}, {"id": "api_qc_list_qc_third_party_items", "label": "list_qc_third_party_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L238"}, {"id": "api_qc_list_qc_third_party_items_active", "label": "list_qc_third_party_items_active()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L267"}, {"id": "api_qc_create_qc_third_party_item", "label": "create_qc_third_party_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L282"}, {"id": "api_qc_update_qc_third_party_item", "label": "update_qc_third_party_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L311"}, {"id": "api_qc_delete_qc_third_party_item", "label": "delete_qc_third_party_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L342"}, {"id": "api_qc_labtestitembody", "label": "LabTestItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L362"}, {"id": "api_qc_labtestitemupdatebody", "label": "LabTestItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L373"}, {"id": "api_qc_itemparambody", "label": "ItemParamBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L387"}, {"id": "api_qc_taskresultbody", "label": "TaskResultBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L392"}, {"id": "api_qc_taskcompletewithresultbody", "label": "TaskCompleteWithResultBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L397"}, {"id": "api_qc_list_qc_lab_test_items", "label": "list_qc_lab_test_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L407"}, {"id": "api_qc_list_qc_lab_test_items_active", "label": "list_qc_lab_test_items_active()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L429"}, {"id": "api_qc_create_qc_lab_test_item", "label": "create_qc_lab_test_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L443"}, {"id": "api_qc_update_qc_lab_test_item", "label": "update_qc_lab_test_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L471"}, {"id": "api_qc_delete_qc_lab_test_item", "label": "delete_qc_lab_test_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L501"}, {"id": "api_qc_list_item_params", "label": "list_item_params()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L522"}, {"id": "api_qc_save_item_params", "label": "save_item_params()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L538"}, {"id": "api_qc_workorderconfigurebody", "label": "WorkOrderConfigureBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L560"}, {"id": "api_qc_assert_task_write_access", "label": "_assert_task_write_access()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L573"}, {"id": "api_qc_create_qc_work_order", "label": "create_qc_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L593"}, {"id": "api_qc_list_qc_work_orders", "label": "list_qc_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L632"}, {"id": "api_qc_get_qc_work_order_detail", "label": "get_qc_work_order_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L675"}, {"id": "api_qc_get_outbound_qc_detail", "label": "get_outbound_qc_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L693"}, {"id": "api_qc_update_qc_work_order", "label": "update_qc_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L711"}, {"id": "api_qc_delete_qc_work_order_api", "label": "delete_qc_work_order_api()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L741"}, {"id": "api_qc_configure_qc_work_order", "label": "configure_qc_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L755"}, {"id": "api_qc_taskattachmentsbody", "label": "TaskAttachmentsBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L788"}, {"id": "api_qc_create_qc_task", "label": "create_qc_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L795"}, {"id": "api_qc_list_my_qc_tasks", "label": "list_my_qc_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L827"}, {"id": "api_qc_list_qc_tasks", "label": "list_qc_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L862"}, {"id": "api_qc_get_qc_task_detail", "label": "get_qc_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L895"}, {"id": "api_qc_start_qc_task", "label": "start_qc_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L913"}, {"id": "api_qc_complete_qc_task", "label": "complete_qc_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L933"}, {"id": "api_qc_get_task_results", "label": "get_task_results()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L953"}, {"id": "api_qc_list_qc_material_requisition_options", "label": "list_qc_material_requisition_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L968"}, {"id": "api_qc_get_task_material_usages", "label": "get_task_material_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L991"}, {"id": "api_qc_complete_task_with_result", "label": "complete_task_with_result()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1011"}, {"id": "api_qc_update_qc_task_attachments", "label": "update_qc_task_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1073"}, {"id": "api_qc_delete_qc_task_api", "label": "delete_qc_task_api()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1100"}, {"id": "api_qc_qcmaterialbody", "label": "QcMaterialBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1116"}, {"id": "api_qc_qcmaterialupdatebody", "label": "QcMaterialUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1127"}, {"id": "api_qc_stockinbody", "label": "StockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1138"}, {"id": "api_qc_batchstockinitem", "label": "BatchStockInItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1153"}, {"id": "api_qc_batchstockinbody", "label": "BatchStockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1168"}, {"id": "api_qc_batchstockoutitem", "label": "BatchStockOutItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1175"}, {"id": "api_qc_batchstockoutbody", "label": "BatchStockOutBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1182"}, {"id": "api_qc_batchdiscarditem", "label": "BatchDiscardItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1191"}, {"id": "api_qc_batchdiscardbody", "label": "BatchDiscardBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1199"}, {"id": "api_qc_qcmaterialbatchupdatebody", "label": "QcMaterialBatchUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1207"}, {"id": "api_qc_list_qc_material_batches", "label": "list_qc_material_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1228"}, {"id": "api_qc_qc_material_batch_options", "label": "qc_material_batch_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1257"}, {"id": "api_qc_update_qc_material_batch", "label": "update_qc_material_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1280"}, {"id": "api_qc_delete_qc_material_batch", "label": "delete_qc_material_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1309"}, {"id": "api_qc_list_qc_materials", "label": "list_qc_materials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1326"}, {"id": "api_qc_qc_material_options", "label": "qc_material_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1348"}, {"id": "api_qc_create_qc_material", "label": "create_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1360"}, {"id": "api_qc_update_qc_material", "label": "update_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1390"}, {"id": "api_qc_delete_qc_material", "label": "delete_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1419"}, {"id": "api_qc_batch_stock_in_qc_material", "label": "batch_stock_in_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1436"}, {"id": "api_qc_batch_stock_out_qc_material", "label": "batch_stock_out_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1489"}, {"id": "api_qc_batch_discard_qc_material", "label": "batch_discard_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1525"}, {"id": "api_qc_stock_in_qc_material", "label": "stock_in_qc_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1567"}, {"id": "api_qc_batch_stock_in_qc_material_batches", "label": "batch_stock_in_qc_material_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1609"}, {"id": "api_qc_batch_stock_out_qc_material_batches", "label": "batch_stock_out_qc_material_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1619"}, {"id": "api_qc_batch_discard_qc_material_batches", "label": "batch_discard_qc_material_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1629"}, {"id": "api_qc_list_qc_material_usages", "label": "list_qc_material_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1642"}, {"id": "api_qc_list_my_qc_material_usages", "label": "list_my_qc_material_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1671"}, {"id": "api_qc_list_qc_material_linked_task_usages", "label": "list_qc_material_linked_task_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1710"}, {"id": "api_qc_list_qc_material_stock_check_requisitions", "label": "list_qc_material_stock_check_requisitions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1735"}, {"id": "api_qc_mark_qc_material_usage_fully_used", "label": "mark_qc_material_usage_fully_used()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1761"}, {"id": "api_qc_stockcheckcreatebody", "label": "StockCheckCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1791"}, {"id": "api_qc_stockcheckunusedlineitem", "label": "StockCheckUnusedLineItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1798"}, {"id": "api_qc_stockcheckunusedlinesbody", "label": "StockCheckUnusedLinesBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1818"}, {"id": "api_qc_list_qc_material_stock_checks", "label": "list_qc_material_stock_checks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1824"}, {"id": "api_qc_create_qc_material_stock_check", "label": "create_qc_material_stock_check()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1855"}, {"id": "api_qc_get_qc_material_stock_check", "label": "get_qc_material_stock_check()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1881"}, {"id": "api_qc_save_qc_material_stock_check_unused_lines", "label": "save_qc_material_stock_check_unused_lines()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1897"}, {"id": "api_qc_complete_qc_material_stock_check", "label": "complete_qc_material_stock_check()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1923"}, {"id": "api_qc_cancel_qc_material_stock_check", "label": "cancel_qc_material_stock_check()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1940"}, {"id": "api_qc_rationale_1", "label": "\u8d28\u91cf\u68c0\u6d4b \u2014 \u7b2c\u4e09\u65b9/\u5b9e\u9a8c\u5ba4\u4e3b\u6570\u636e\u3001\u8d28\u68c0\u5de5\u5355\u3001\u8d28\u68c0\u4efb\u52a1 API", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1"}, {"id": "api_qc_rationale_1614", "label": "\u6279\u91cf\u5165\u5e93\uff08\u4e0e /qc-materials/batch-stock-in \u7b49\u4ef7\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1614"}, {"id": "api_qc_rationale_1624", "label": "\u6279\u91cf\u51fa\u5e93\uff08\u4e0e /qc-materials/batch-stock-out \u7b49\u4ef7\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1624"}, {"id": "api_qc_rationale_1634", "label": "\u6279\u91cf\u5e9f\u5f03\uff08\u4e0e /qc-materials/batch-discard \u7b49\u4ef7\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1634"}, {"id": "api_qc_rationale_1683", "label": "\u5f53\u524d\u767b\u5f55\u4eba\u7684\u7269\u6599\u9886\u7528\u8bb0\u5f55\uff08\u624b\u52a8\u51fa\u5e93\u9886\u7528\u4eba / \u4efb\u52a1\u4f7f\u7528\u586b\u62a5\u4eba\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1683"}, {"id": "api_qc_rationale_1742", "label": "\u76d8\u70b9\u767b\u8bb0\uff1a\u5f85\u5904\u7406\u9886\u7528\u8bb0\u5f55\uff08\u672a\u6807\u8bb0\u5df2\u4f7f\u7528\u5b8c\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1742"}, {"id": "api_qc_rationale_1768", "label": "\u6807\u8bb0\u9886\u7528\u8bb0\u5f55\u5df2\u4f7f\u7528\u5b8c\uff08\u76d8\u70b9\u767b\u8bb0 / \u53d8\u52a8\u8bb0\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1768"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_core_menu_guard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_crud_collection_protocol", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_api_sample_reception", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_schemas_qc_work_order", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "app_schemas_qc_task", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_thirdpartycompanybody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L48", "weight": 1.0}, {"source": "api_qc_thirdpartycompanybody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L48", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_thirdpartycompanyupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L66", "weight": 1.0}, {"source": "api_qc_thirdpartycompanyupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_third_party_companies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_third_party_company_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L107", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_third_party_company", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_third_party_company", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_third_party_company", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_thirdpartyitembody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L213", "weight": 1.0}, {"source": "api_qc_thirdpartyitembody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L213", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_thirdpartyitemupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L225", "weight": 1.0}, {"source": "api_qc_thirdpartyitemupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L225", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_third_party_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_third_party_items_active", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L267", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_third_party_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_third_party_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_third_party_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_labtestitembody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L362", "weight": 1.0}, {"source": "api_qc_labtestitembody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L362", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_labtestitemupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L373", "weight": 1.0}, {"source": "api_qc_labtestitemupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_itemparambody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L387", "weight": 1.0}, {"source": "api_qc_itemparambody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L387", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_taskresultbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L392", "weight": 1.0}, {"source": "api_qc_taskresultbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L392", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_taskcompletewithresultbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L397", "weight": 1.0}, {"source": "api_qc_taskcompletewithresultbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_lab_test_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L407", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_lab_test_items_active", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_lab_test_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_lab_test_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L471", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_lab_test_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_item_params", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L522", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_save_item_params", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L538", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_workorderconfigurebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L560", "weight": 1.0}, {"source": "api_qc_workorderconfigurebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L560", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_assert_task_write_access", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_work_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L593", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_work_orders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L632", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_get_qc_work_order_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L675", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_get_outbound_qc_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L693", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_work_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_work_order_api", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L741", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_configure_qc_work_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L755", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_taskattachmentsbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L788", "weight": 1.0}, {"source": "api_qc_taskattachmentsbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L788", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_task", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L795", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_my_qc_tasks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L827", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_tasks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L862", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_get_qc_task_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L895", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_start_qc_task", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L913", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_complete_qc_task", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L933", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_get_task_results", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L953", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_material_requisition_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L968", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_get_task_material_usages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L991", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_complete_task_with_result", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1011", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_task_attachments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1073", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_task_api", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_qcmaterialbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1116", "weight": 1.0}, {"source": "api_qc_qcmaterialbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_qcmaterialupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1127", "weight": 1.0}, {"source": "api_qc_qcmaterialupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_stockinbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1138", "weight": 1.0}, {"source": "api_qc_stockinbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batchstockinitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1153", "weight": 1.0}, {"source": "api_qc_batchstockinitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1153", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batchstockinbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1168", "weight": 1.0}, {"source": "api_qc_batchstockinbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batchstockoutitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1175", "weight": 1.0}, {"source": "api_qc_batchstockoutitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batchstockoutbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1182", "weight": 1.0}, {"source": "api_qc_batchstockoutbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batchdiscarditem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1191", "weight": 1.0}, {"source": "api_qc_batchdiscarditem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1191", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batchdiscardbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1199", "weight": 1.0}, {"source": "api_qc_batchdiscardbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1199", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_qcmaterialbatchupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1207", "weight": 1.0}, {"source": "api_qc_qcmaterialbatchupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_material_batches", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_qc_material_batch_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_material_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1280", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_material_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1309", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_materials", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1326", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_qc_material_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1348", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_update_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_delete_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batch_stock_in_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batch_stock_out_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1489", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batch_discard_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1525", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_stock_in_qc_material", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1567", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batch_stock_in_qc_material_batches", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1609", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batch_stock_out_qc_material_batches", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1619", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_batch_discard_qc_material_batches", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1629", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_material_usages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1642", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_my_qc_material_usages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_material_linked_task_usages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1710", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_material_stock_check_requisitions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1735", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_mark_qc_material_usage_fully_used", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1761", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_stockcheckcreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1791", "weight": 1.0}, {"source": "api_qc_stockcheckcreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1791", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_stockcheckunusedlineitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1798", "weight": 1.0}, {"source": "api_qc_stockcheckunusedlineitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1798", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_stockcheckunusedlinesbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1818", "weight": 1.0}, {"source": "api_qc_stockcheckunusedlinesbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1818", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_list_qc_material_stock_checks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1824", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_create_qc_material_stock_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1855", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_get_qc_material_stock_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1881", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_save_qc_material_stock_check_unused_lines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1897", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_complete_qc_material_stock_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1923", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "target": "api_qc_cancel_qc_material_stock_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1940", "weight": 1.0}, {"source": "api_qc_start_qc_task", "target": "api_qc_assert_task_write_access", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L921", "weight": 1.0}, {"source": "api_qc_complete_task_with_result", "target": "api_qc_assert_task_write_access", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1024", "weight": 1.0}, {"source": "api_qc_update_qc_task_attachments", "target": "api_qc_assert_task_write_access", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1082", "weight": 1.0}, {"source": "api_qc_batch_stock_in_qc_material_batches", "target": "api_qc_batch_stock_in_qc_material", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1615", "weight": 1.0}, {"source": "api_qc_batch_stock_out_qc_material_batches", "target": "api_qc_batch_stock_out_qc_material", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1625", "weight": 1.0}, {"source": "api_qc_batch_discard_qc_material_batches", "target": "api_qc_batch_discard_qc_material", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1635", "weight": 1.0}, {"source": "api_qc_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1", "weight": 1.0}, {"source": "api_qc_rationale_1614", "target": "api_qc_batch_stock_in_qc_material_batches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1614", "weight": 1.0}, {"source": "api_qc_rationale_1624", "target": "api_qc_batch_stock_out_qc_material_batches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1624", "weight": 1.0}, {"source": "api_qc_rationale_1634", "target": "api_qc_batch_discard_qc_material_batches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1634", "weight": 1.0}, {"source": "api_qc_rationale_1683", "target": "api_qc_list_my_qc_material_usages", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1683", "weight": 1.0}, {"source": "api_qc_rationale_1742", "target": "api_qc_list_qc_material_stock_check_requisitions", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1742", "weight": 1.0}, {"source": "api_qc_rationale_1768", "target": "api_qc_mark_qc_material_usage_fully_used", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1768", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L94"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "list_companies", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L95"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L99"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L99"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L101"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L101"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L103"}, {"caller_nid": "api_qc_list_qc_third_party_companies", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L103"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L112"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L113"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "list_company_options", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L113"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L115"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L115"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L117"}, {"caller_nid": "api_qc_list_qc_third_party_company_options", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L117"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L127"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "create_company", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L128"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L144"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L146"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L146"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L148"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L148"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L150"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L150"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L152"}, {"caller_nid": "api_qc_create_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L152"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L163"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "update_company", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L164"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L180"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L183"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L183"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L185"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L185"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L187"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L187"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L189"}, {"caller_nid": "api_qc_update_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L189"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L199"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "soft_delete_company", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L200"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L201"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L203"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L203"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L205"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L205"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L207"}, {"caller_nid": "api_qc_delete_qc_third_party_company", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L207"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L248"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "list_items", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L249"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L259"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L259"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L261"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L261"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L263"}, {"caller_nid": "api_qc_list_qc_third_party_items", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L263"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L273"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L274"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "list_active_items", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L274"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L276"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L276"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L278"}, {"caller_nid": "api_qc_list_qc_third_party_items_active", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L278"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L288"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "create_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L289"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L299"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L301"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L301"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L303"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L303"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L305"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L305"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L307"}, {"caller_nid": "api_qc_create_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L307"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L318"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "update_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L319"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L329"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L332"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L332"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L334"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L334"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L336"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L336"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L338"}, {"caller_nid": "api_qc_update_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L338"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L348"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "soft_delete_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L349"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L350"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L352"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L352"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L354"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L354"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L356"}, {"caller_nid": "api_qc_delete_qc_third_party_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L356"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L416"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "list_lab_items", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L417"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L421"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L421"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L423"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L423"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L425"}, {"caller_nid": "api_qc_list_qc_lab_test_items", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L425"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L434"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L435"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "list_active_lab_items", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L435"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L437"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L437"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L439"}, {"caller_nid": "api_qc_list_qc_lab_test_items_active", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L439"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L449"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "create_lab_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L450"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L459"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L461"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L461"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L463"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L463"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L465"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L465"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L467"}, {"caller_nid": "api_qc_create_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L467"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L478"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "update_lab_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L479"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L488"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L491"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L491"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L493"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L493"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L495"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L495"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L497"}, {"caller_nid": "api_qc_update_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L497"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L507"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "soft_delete_lab_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L508"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L509"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L511"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L511"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L513"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L513"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L515"}, {"caller_nid": "api_qc_delete_qc_lab_test_item", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L515"}, {"caller_nid": "api_qc_list_item_params", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L529"}, {"caller_nid": "api_qc_list_item_params", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L530"}, {"caller_nid": "api_qc_list_item_params", "callee": "list_params_by_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L530"}, {"caller_nid": "api_qc_list_item_params", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L532"}, {"caller_nid": "api_qc_list_item_params", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L532"}, {"caller_nid": "api_qc_list_item_params", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L534"}, {"caller_nid": "api_qc_list_item_params", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L534"}, {"caller_nid": "api_qc_save_item_params", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L546"}, {"caller_nid": "api_qc_save_item_params", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L547"}, {"caller_nid": "api_qc_save_item_params", "callee": "save_params_for_item", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L548"}, {"caller_nid": "api_qc_save_item_params", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L548"}, {"caller_nid": "api_qc_save_item_params", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L552"}, {"caller_nid": "api_qc_save_item_params", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L552"}, {"caller_nid": "api_qc_save_item_params", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L554"}, {"caller_nid": "api_qc_save_item_params", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L554"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L580"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L580"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L581"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L582"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "get_user_menu_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L583"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L583"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "PermissionError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L586"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "assert_task_assignee", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L587"}, {"caller_nid": "api_qc_assert_task_write_access", "callee": "PermissionError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L589"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L599"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L600"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "create_temp_qc_work_order", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L602"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L605"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L606"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "create_qc_work_order_manual", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L611"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L614"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L615"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L622"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L623"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "_wo_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L623"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L625"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L625"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L627"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L628"}, {"caller_nid": "api_qc_create_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L628"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L649"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "list_work_orders", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L650"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L667"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L667"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L669"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L669"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L671"}, {"caller_nid": "api_qc_list_qc_work_orders", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L671"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L681"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "get_work_order_detail", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L682"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L683"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L685"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L685"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L687"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L687"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L689"}, {"caller_nid": "api_qc_get_qc_work_order_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L689"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L699"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L701"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L703"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L703"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L705"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L705"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L707"}, {"caller_nid": "api_qc_get_outbound_qc_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L707"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L718"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L723"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L728"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L729"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "_wo_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L729"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L731"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L731"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L733"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L734"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L734"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L736"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L737"}, {"caller_nid": "api_qc_update_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L737"}, {"caller_nid": "api_qc_delete_qc_work_order_api", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L747"}, {"caller_nid": "api_qc_delete_qc_work_order_api", "callee": "delete_qc_work_order", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L748"}, {"caller_nid": "api_qc_delete_qc_work_order_api", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L748"}, {"caller_nid": "api_qc_delete_qc_work_order_api", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L749"}, {"caller_nid": "api_qc_delete_qc_work_order_api", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L751"}, {"caller_nid": "api_qc_delete_qc_work_order_api", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L751"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L762"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "configure_work_order", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L763"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L773"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L774"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L776"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "_wo_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L776"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L778"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L778"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L780"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L780"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L782"}, {"caller_nid": "api_qc_configure_qc_work_order", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L782"}, {"caller_nid": "api_qc_create_qc_task", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L801"}, {"caller_nid": "api_qc_create_qc_task", "callee": "create_qc_task_manual", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L802"}, {"caller_nid": "api_qc_create_qc_task", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L805"}, {"caller_nid": "api_qc_create_qc_task", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L806"}, {"caller_nid": "api_qc_create_qc_task", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L817"}, {"caller_nid": "api_qc_create_qc_task", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L818"}, {"caller_nid": "api_qc_create_qc_task", "callee": "_task_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L818"}, {"caller_nid": "api_qc_create_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L820"}, {"caller_nid": "api_qc_create_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L820"}, {"caller_nid": "api_qc_create_qc_task", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L822"}, {"caller_nid": "api_qc_create_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L823"}, {"caller_nid": "api_qc_create_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L823"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L840"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "list_mine_tasks", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L841"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L843"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L854"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L854"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L856"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L856"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L858"}, {"caller_nid": "api_qc_list_my_qc_tasks", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L858"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L874"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "list_tasks", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L875"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L887"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L887"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L889"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L889"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L891"}, {"caller_nid": "api_qc_list_qc_tasks", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L891"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L901"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "get_task_detail", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L902"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L903"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L905"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L905"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L907"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L907"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L909"}, {"caller_nid": "api_qc_get_qc_task_detail", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L909"}, {"caller_nid": "api_qc_start_qc_task", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L920"}, {"caller_nid": "api_qc_start_qc_task", "callee": "start_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L922"}, {"caller_nid": "api_qc_start_qc_task", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L922"}, {"caller_nid": "api_qc_start_qc_task", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L923"}, {"caller_nid": "api_qc_start_qc_task", "callee": "_task_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L923"}, {"caller_nid": "api_qc_start_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L925"}, {"caller_nid": "api_qc_start_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L925"}, {"caller_nid": "api_qc_start_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L927"}, {"caller_nid": "api_qc_start_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L927"}, {"caller_nid": "api_qc_start_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L929"}, {"caller_nid": "api_qc_start_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L929"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L939"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "complete_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L940"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L941"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L943"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "_task_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L943"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L945"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L945"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L947"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L947"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L949"}, {"caller_nid": "api_qc_complete_qc_task", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L949"}, {"caller_nid": "api_qc_get_task_results", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L959"}, {"caller_nid": "api_qc_get_task_results", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L960"}, {"caller_nid": "api_qc_get_task_results", "callee": "list_results_by_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L960"}, {"caller_nid": "api_qc_get_task_results", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L962"}, {"caller_nid": "api_qc_get_task_results", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L962"}, {"caller_nid": "api_qc_get_task_results", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L964"}, {"caller_nid": "api_qc_get_task_results", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L964"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L975"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "list_requisition_options", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L976"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L983"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L985"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L985"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L987"}, {"caller_nid": "api_qc_list_qc_material_requisition_options", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L987"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L997"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "get_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L998"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1000"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1001"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "list_usages_by_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1002"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1005"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1005"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1007"}, {"caller_nid": "api_qc_get_task_material_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1007"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1019"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1020"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "get_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1021"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1023"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1025"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "save_results_for_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1027"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1030"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1032"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "update_task_attachments", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1034"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "apply_task_result", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1038"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1048"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1049"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1050"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "try_complete_work_order", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1051"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1052"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "_task_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1053"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1057"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1059"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1059"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1060"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1062"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1063"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1063"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1065"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1066"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1066"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "rollback", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1068"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1069"}, {"caller_nid": "api_qc_complete_task_with_result", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1069"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1081"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "update_task_attachments", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1083"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1088"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1090"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "_task_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1090"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1092"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1092"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1094"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1094"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1096"}, {"caller_nid": "api_qc_update_qc_task_attachments", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1096"}, {"caller_nid": "api_qc_delete_qc_task_api", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1106"}, {"caller_nid": "api_qc_delete_qc_task_api", "callee": "delete_qc_task", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1107"}, {"caller_nid": "api_qc_delete_qc_task_api", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1107"}, {"caller_nid": "api_qc_delete_qc_task_api", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1108"}, {"caller_nid": "api_qc_delete_qc_task_api", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1110"}, {"caller_nid": "api_qc_delete_qc_task_api", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1110"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1238"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "list_batches", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1239"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1249"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1249"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1251"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1251"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1253"}, {"caller_nid": "api_qc_list_qc_material_batches", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1253"}, {"caller_nid": "api_qc_qc_material_batch_options", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1265"}, {"caller_nid": "api_qc_qc_material_batch_options", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1266"}, {"caller_nid": "api_qc_qc_material_batch_options", "callee": "batch_options", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1267"}, {"caller_nid": "api_qc_qc_material_batch_options", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1276"}, {"caller_nid": "api_qc_qc_material_batch_options", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1276"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1287"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1288"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "model_dump", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1289"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "update_batch", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1290"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "get_material", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1297"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1298"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "_batch_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1299"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1303"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1303"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1305"}, {"caller_nid": "api_qc_update_qc_material_batch", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1305"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1315"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1316"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "delete_batch", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1317"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1318"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1320"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1320"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1322"}, {"caller_nid": "api_qc_delete_qc_material_batch", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1322"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1335"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "list_materials", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1336"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1340"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1340"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1342"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1342"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1344"}, {"caller_nid": "api_qc_list_qc_materials", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1344"}, {"caller_nid": "api_qc_qc_material_options", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1353"}, {"caller_nid": "api_qc_qc_material_options", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1354"}, {"caller_nid": "api_qc_qc_material_options", "callee": "options_list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1354"}, {"caller_nid": "api_qc_qc_material_options", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1356"}, {"caller_nid": "api_qc_qc_material_options", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1356"}, {"caller_nid": "api_qc_create_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1366"}, {"caller_nid": "api_qc_create_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1367"}, {"caller_nid": "api_qc_create_qc_material", "callee": "create_material", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1368"}, {"caller_nid": "api_qc_create_qc_material", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1374"}, {"caller_nid": "api_qc_create_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1374"}, {"caller_nid": "api_qc_create_qc_material", "callee": "_norm_status", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1377"}, {"caller_nid": "api_qc_create_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1382"}, {"caller_nid": "api_qc_create_qc_material", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1382"}, {"caller_nid": "api_qc_create_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1384"}, {"caller_nid": "api_qc_create_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1384"}, {"caller_nid": "api_qc_create_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1386"}, {"caller_nid": "api_qc_create_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1386"}, {"caller_nid": "api_qc_update_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1397"}, {"caller_nid": "api_qc_update_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1398"}, {"caller_nid": "api_qc_update_qc_material", "callee": "model_dump", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1399"}, {"caller_nid": "api_qc_update_qc_material", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1401"}, {"caller_nid": "api_qc_update_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1401"}, {"caller_nid": "api_qc_update_qc_material", "callee": "_norm_status", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1403"}, {"caller_nid": "api_qc_update_qc_material", "callee": "update_material", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1404"}, {"caller_nid": "api_qc_update_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1411"}, {"caller_nid": "api_qc_update_qc_material", "callee": "_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1411"}, {"caller_nid": "api_qc_update_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1413"}, {"caller_nid": "api_qc_update_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1413"}, {"caller_nid": "api_qc_update_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1415"}, {"caller_nid": "api_qc_update_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1415"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1425"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1426"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "soft_delete_material", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1427"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1428"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1430"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1430"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1432"}, {"caller_nid": "api_qc_delete_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1432"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1442"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1443"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1444"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "parse_datetime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1446"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1448"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "batch_stock_in", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1473"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1481"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1483"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1483"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1485"}, {"caller_nid": "api_qc_batch_stock_in_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1485"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1495"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1496"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1497"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "parse_datetime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1499"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1501"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "batch_stock_out", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1507"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1517"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1519"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1519"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1521"}, {"caller_nid": "api_qc_batch_stock_out_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1521"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1531"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1532"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1533"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "parse_datetime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1535"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1537"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "batch_discard", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1550"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1559"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1561"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1561"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1563"}, {"caller_nid": "api_qc_batch_discard_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1563"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1574"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1575"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1576"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "parse_datetime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1578"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1580"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "stock_in_one", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1584"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1595"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1595"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1601"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "_batch_row_to_dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1601"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1603"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1603"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1605"}, {"caller_nid": "api_qc_stock_in_qc_material", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1605"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1655"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "list_usages", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1656"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1663"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1663"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1665"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1665"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1667"}, {"caller_nid": "api_qc_list_qc_material_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1667"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1685"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "list_my_usages", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1686"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1689"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1690"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1690"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "user_has_menu_perm", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1700"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "strip_row_fields", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1701"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1702"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1702"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1704"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1704"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1706"}, {"caller_nid": "api_qc_list_my_qc_material_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1706"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1719"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "list_linked_task_usages", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1720"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1723"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1726"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1726"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1727"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1729"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1729"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1731"}, {"caller_nid": "api_qc_list_qc_material_linked_task_usages", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1731"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1744"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "list_stock_check_requisitions", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1745"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1753"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1753"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1755"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1755"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1757"}, {"caller_nid": "api_qc_list_qc_material_stock_check_requisitions", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1757"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1770"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1771"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "mark_requisition_fully_used", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1772"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1779"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1781"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1781"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1783"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1783"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1785"}, {"caller_nid": "api_qc_mark_qc_material_usage_fully_used", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1785"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1835"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "list_checks", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1836"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1847"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "_page_payload", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1847"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1849"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1849"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1851"}, {"caller_nid": "api_qc_list_qc_material_stock_checks", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1851"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1861"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1862"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1863"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1863"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "create_check", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1864"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1873"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1875"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1875"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1877"}, {"caller_nid": "api_qc_create_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1877"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1887"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "get_check_detail", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1888"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1889"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1891"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1891"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1893"}, {"caller_nid": "api_qc_get_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1893"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1904"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1905"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1906"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1906"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "save_unused_lines", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1907"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "model_dump", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1910"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1915"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1917"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1917"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1919"}, {"caller_nid": "api_qc_save_qc_material_stock_check_unused_lines", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1919"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1929"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1930"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "complete_check", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1931"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1932"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1934"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1934"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1936"}, {"caller_nid": "api_qc_complete_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1936"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "_get_tenant_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1946"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "_get_current_user_id", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1947"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "cancel_check", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1948"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1949"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1951"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1951"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1953"}, {"caller_nid": "api_qc_cancel_qc_material_stock_check", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1953"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/95ba3a8b3a47a62baae852af8c021038f81af80e7cee8484b5bfb1318fcc51dc.json b/backend/app/graphify-out/cache/ast/95ba3a8b3a47a62baae852af8c021038f81af80e7cee8484b5bfb1318fcc51dc.json new file mode 100644 index 00000000..b5e14c1e --- /dev/null +++ b/backend/app/graphify-out/cache/ast/95ba3a8b3a47a62baae852af8c021038f81af80e7cee8484b5bfb1318fcc51dc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "label": "menu_guard.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1"}, {"id": "core_menu_guard_require_admin_or_super_admin", "label": "require_admin_or_super_admin()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L14"}, {"id": "core_menu_guard_get_user_menu_codes", "label": "get_user_menu_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L22"}, {"id": "core_menu_guard_user_has_menu_perm", "label": "user_has_menu_perm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L27"}, {"id": "core_menu_guard_strip_row_fields", "label": "strip_row_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L40"}, {"id": "core_menu_guard_require_menu_code", "label": "require_menu_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L50"}, {"id": "core_menu_guard_require_any_menu_code", "label": "require_any_menu_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L56"}, {"id": "core_menu_guard_rationale_1", "label": "\u83dc\u5355 code \u6743\u9650\u5b88\u536b\uff08V0.3\uff1a\u901a\u8fc7 sys_user_role \u2192 sys_role_menu \u2192 sys_menu.perms\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1"}, {"id": "core_menu_guard_rationale_15", "label": "\u8fd0\u8425\u7aef\u89d2\u8272\u5b88\u536b\uff1aadmin / super_admin \u53ef\u8bbf\u95ee\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L15"}, {"id": "core_menu_guard_rationale_23", "label": "\u8bfb\u53d6\u7528\u6237\u6388\u6743\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\u96c6\u5408\uff08\u4e0e\u524d\u7aef meta.menuCode / perms \u5bf9\u9f50\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L23"}, {"id": "core_menu_guard_rationale_28", "label": "\u5224\u65ad\u7528\u6237\u662f\u5426\u62e5\u6709\u6307\u5b9a\u6743\u9650\u7801\uff08\u4e0d\u62e6\u622a\u8bf7\u6c42\uff0c\u7528\u4e8e\u5b57\u6bb5/\u6309\u94ae\u7ea7\u80fd\u529b\u63a7\u5236\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L28"}, {"id": "core_menu_guard_rationale_51", "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff08\u5df2\u7edf\u4e00\u653e\u884c menuCode \u6821\u9a8c\uff0c\u4ec5\u4fdd\u7559\u8fd0\u8425\u7aef\u767b\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L51"}, {"id": "core_menu_guard_rationale_57", "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff08\u5df2\u7edf\u4e00\u653e\u884c menuCode \u6821\u9a8c\uff0c\u4ec5\u4fdd\u7559\u8fd0\u8425\u7aef\u767b\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L57"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_core_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_get_user_menu_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_user_has_menu_perm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_strip_row_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L40", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_menu_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_any_menu_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L56", "weight": 1.0}, {"source": "core_menu_guard_user_has_menu_perm", "target": "core_menu_guard_get_user_menu_codes", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L37", "weight": 1.0}, {"source": "core_menu_guard_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1", "weight": 1.0}, {"source": "core_menu_guard_rationale_15", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L15", "weight": 1.0}, {"source": "core_menu_guard_rationale_23", "target": "core_menu_guard_get_user_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L23", "weight": 1.0}, {"source": "core_menu_guard_rationale_28", "target": "core_menu_guard_user_has_menu_perm", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L28", "weight": 1.0}, {"source": "core_menu_guard_rationale_51", "target": "core_menu_guard_require_menu_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L51", "weight": 1.0}, {"source": "core_menu_guard_rationale_57", "target": "core_menu_guard_require_any_menu_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L57", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_menu_guard_require_admin_or_super_admin", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L16"}, {"caller_nid": "core_menu_guard_require_admin_or_super_admin", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L18"}, {"caller_nid": "core_menu_guard_get_user_menu_codes", "callee": "iter_user_menu_perm_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L24"}, {"caller_nid": "core_menu_guard_user_has_menu_perm", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L29"}, {"caller_nid": "core_menu_guard_user_has_menu_perm", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L32"}, {"caller_nid": "core_menu_guard_user_has_menu_perm", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L34"}, {"caller_nid": "core_menu_guard_user_has_menu_perm", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L34"}, {"caller_nid": "core_menu_guard_strip_row_fields", "callee": "pop", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L47"}]} \ No newline at end of file diff --git a/backend/app/services/web_auth_roles.py b/backend/app/services/web_auth_roles.py index aa4a3aed..5d9f2be7 100644 --- a/backend/app/services/web_auth_roles.py +++ b/backend/app/services/web_auth_roles.py @@ -55,6 +55,12 @@ def user_has_active_roles(db: Session, user_id: str) -> bool: return bool(_active_role_name_rows(db, user_id)) +def get_user_role_names(db: Session, user_id: str) -> list: + """用户当前绑定的 sys_role.role_name 列表(去重、保序)。""" + names = _active_role_name_rows(db, user_id) + return list(dict.fromkeys(names)) + + def resolve_web_role_for_user(db: Session, user_id: str) -> str: """根据用户关联角色解析 Web 端 role(admin / super_admin / guest)。""" names = _active_role_name_rows(db, user_id) @@ -69,8 +75,9 @@ def resolve_web_role_for_user(db: Session, user_id: str) -> str: def iter_user_menu_perm_codes(db: Session, user_id: str) -> Set[str]: """用户通过角色关联得到的菜单权限标识(sys_menu.perms,空则退回菜单 id)。 - 注:一级菜单(market、production、quality、operations、system-manage)已在 sys_menu 表中, - 其 menuCode(如 menu:market)会自动被本函数返回,可用于前端顶部菜单的权限控制。 + 注:不过滤 visible——F 类型按钮等 visible=0 的菜单仍可通过角色授权生效; + visible 仅控制侧栏/菜单树展示,不影响权限码解析。 + 一级菜单(menu:market 等)同样经本函数返回,用于前端顶部菜单权限控制。 """ if not user_id: return set() @@ -99,7 +106,6 @@ def iter_user_menu_perm_codes(db: Session, user_id: str) -> Set[str]: SysMenu.del_flag == 0, SysMenu.tenant_no == tenant, SysMenu.status == "1", - SysMenu.visible == "1", ) .distinct() ) diff --git a/backend/graphify-out/.graphify_analysis.json b/backend/graphify-out/.graphify_analysis.json index 986920d9..d46fe236 100644 --- a/backend/graphify-out/.graphify_analysis.json +++ b/backend/graphify-out/.graphify_analysis.json @@ -69,28 +69,12 @@ "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_hospital", - "api_basic_info_delete_protocol_no", - "api_basic_info_delete_sample_code", - "api_basic_info_get_tenant_no", - "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_normalize_date_bound", - "api_basic_info_py", "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", @@ -152,6 +136,7 @@ "api_collection_protocol_list_refund_confirmed", "api_collection_protocol_list_storage_certs", "api_collection_protocol_parse_datetime_fields", + "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", @@ -181,6 +166,7 @@ "api_env_detect_list_env_detect_records", "api_env_detect_page_payload", "api_env_detect_py", + "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", @@ -623,8 +609,17 @@ "api_protocol_sample_collection_list_protocol_sample_collections", "api_protocol_sample_collection_page_payload", "api_protocol_sample_collection_py", + "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_current_user_profile", "api_public_get_web_auth_menu_codes", + "api_public_logout", + "api_public_py", + "api_public_resolve_current_user_from_request", + "api_public_update_current_user_profile", + "api_public_upload_current_user_avatar", "api_qc_assert_task_write_access", "api_qc_batch_discard_qc_material", "api_qc_batch_discard_qc_material_batches", @@ -697,11 +692,24 @@ "api_qc_update_qc_third_party_company", "api_qc_update_qc_third_party_item", "api_qc_update_qc_work_order", + "api_research_donation_batch_delete_research_donations", + "api_research_donation_change_donation_status", + "api_research_donation_convert_from_storage", + "api_research_donation_convert_to_storage", + "api_research_donation_create_research_donation", + "api_research_donation_delete_research_donation", + "api_research_donation_get_current_user_id", + "api_research_donation_get_research_donation_detail", + "api_research_donation_get_tenant_no", + "api_research_donation_list_research_donation_audits", + "api_research_donation_list_research_donations", + "api_research_donation_py", "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_sample_collection_py", "api_research_donation_submit_donation_audit", + "api_research_donation_update_research_donation", "api_sample_reception_allocate_lab_storage_codes", "api_sample_reception_create_check_item", "api_sample_reception_delete_check_item", @@ -765,7 +773,13 @@ "core_admin_request_json_rationale_1", "core_admin_request_json_rationale_25", "core_menu_guard_get_user_menu_codes", - "core_menu_guard_rationale_24", + "core_menu_guard_rationale_23", + "core_menu_guard_rationale_28", + "core_menu_guard_user_has_menu_perm", + "core_request_payload_py", + "core_request_payload_rationale_1", + "core_request_payload_rationale_18", + "core_request_payload_resolve_request_payload", "core_response_error_response", "core_response_format_api_error_message", "core_response_rationale_40", @@ -774,6 +788,7 @@ "crud_base_crudbase_get", "crud_cleanroom_garment_get_garment_detail", "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", @@ -784,7 +799,6 @@ "crud_clinical_payment_get_payment_detail", "crud_clinical_payment_list_payments", "crud_clinical_payment_map_payments_by_schedule_id", - "crud_clinical_payment_map_payments_by_schedule_ids", "crud_clinical_payment_py", "crud_clinical_payment_reject_receipt", "crud_clinical_payment_reject_refund", @@ -792,19 +806,18 @@ "crud_clinical_payment_submit_receipt", "crud_clinical_payment_submit_refund", "crud_collection_protocol_apply_payment_detail_draft_fields", - "crud_collection_protocol_apply_submit_receipt_finance", "crud_collection_protocol_apply_submit_refund_finance", + "crud_collection_protocol_attachments_to_urls", "crud_collection_protocol_batch_submit_receipt_finance", "crud_collection_protocol_batch_submit_refund_finance", "crud_collection_protocol_complete_invoice_request", + "crud_collection_protocol_create_invoice_request", "crud_collection_protocol_get_payment_detail_or_raise", - "crud_collection_protocol_no_enrich_issued_user_names", "crud_collection_protocol_parse_transfer_time_value", - "crud_collection_protocol_submit_receipt_finance", + "crud_collection_protocol_save_sample_transports", "crud_collection_protocol_submit_refund_finance", "crud_collection_protocol_update_payment_detail_draft", - "crud_collection_protocol_validate_receipt_finance_submit_ready", - "crud_collection_region_region_to_dict", + "crud_collection_protocol_upsert_fullmoon_todo", "crud_exhibition_appointment_total_pages", "crud_leave_update_leave_status", "crud_material_stock_check_create_check", @@ -815,21 +828,17 @@ "crud_pilot_application_create_application", "crud_pilot_application_resolve_application_attachment_payload", "crud_pilot_application_update_application", + "crud_pilot_checkup_get_checkup_by_application", "crud_pilot_delivery_save_delivery_materials", - "crud_pilot_service_enrich_finance_operate_fields", + "crud_pilot_delivery_save_delivery_method", + "crud_pilot_infusion_schedule_mgmt_update_infusion_schedule_mgmt", "crud_pilot_service_normalize_txn_product_item", - "crud_pilot_service_row_to_dict_cell_product_price", - "crud_pilot_service_row_to_dict_cell_product_spec", - "crud_pilot_service_row_to_dict_cell_product_type", "crud_pilot_service_row_to_dict_channel_agreement", - "crud_pilot_service_row_to_dict_channel_agreement_price", - "crud_pilot_service_row_to_dict_channel_mail_address", - "crud_pilot_service_row_to_dict_checkup_institution", - "crud_pilot_service_row_to_dict_checkup_institution_invoice", "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_process_route_update_step", + "crud_production_material_stock_batch_batch_stock_out", + "crud_production_task_enrich_assignee_names", "crud_production_task_production_conclusion_label", "crud_production_task_task_to_dict", "crud_production_task_update_task_step", @@ -842,12 +851,11 @@ "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_stock_out", "crud_qc_material_usage_mark_requisition_fully_used", - "crud_qc_task_update_task_attachments", + "crud_research_donation_batch_delete_donations", "crud_research_donation_change_status", - "crud_storage_facility_is_slot_available_row", - "crud_storage_facility_list_slot_select_options", - "crud_storage_facility_slot_select_display_name", + "crud_workflow_get_all_tasks_for_business", "schemas_order_adjust_adjuststatus", "schemas_order_adjust_adjusttype", "schemas_order_adjust_py", @@ -885,25 +893,6 @@ "api_admin_tenantupdatebody", "api_admin_usercreatebody", "api_admin_userupdatebody", - "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_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_cleanroom_garment_garmentbatchdeletebody", "api_cleanroom_garment_garmentbatchdiscardbody", "api_cleanroom_garment_garmentcreatebody", @@ -1020,6 +1009,16 @@ "api_pilot_service_txnrefundbody", "api_pilot_service_txnunsubscribebody", "api_pilot_service_txnupdatebody", + "api_production_batchstockinbody", + "api_production_batchstockinitem", + "api_production_batchstockoutbody", + "api_production_batchstockoutitem", + "api_production_consumablecreatebody", + "api_production_consumablepackcreatebody", + "api_production_consumablepackupdatebody", + "api_production_consumableupdatebody", + "api_production_equipmentcreatebody", + "api_production_equipmentupdatebody", "api_production_material_availablematerialbatch", "api_production_material_batchdiscardbody", "api_production_material_batchdiscarditem", @@ -1041,6 +1040,34 @@ "api_production_material_stockcheckunusedlineitem", "api_production_material_stockcheckunusedlinesbody", "api_production_material_stockinbody", + "api_production_outputtypecreatebody", + "api_production_outputtypeupdatebody", + "api_production_packiteminput", + "api_production_processcategorycreatebody", + "api_production_processcategoryupdatebody", + "api_production_processconsumableinput", + "api_production_processcreatebody", + "api_production_processdatacollectioninput", + "api_production_processoutputinput", + "api_production_processreagentinput", + "api_production_processupdatebody", + "api_production_rationale_1", + "api_production_rationale_2419", + "api_production_reagentcreatebody", + "api_production_reagentupdatebody", + "api_production_sopdocumentcreatebody", + "api_production_sopdocumentupdatebody", + "api_production_stockinbody", + "api_production_stockoutbody", + "api_public_rationale_1", + "api_public_rationale_242", + "api_public_rationale_261", + "api_public_rationale_275", + "api_public_rationale_343", + "api_public_rationale_376", + "api_public_rationale_44", + "api_public_rationale_53", + "api_public_rationale_71", "api_qc_batchdiscardbody", "api_qc_batchdiscarditem", "api_qc_batchstockinbody", @@ -1054,12 +1081,12 @@ "api_qc_qcmaterialbody", "api_qc_qcmaterialupdatebody", "api_qc_rationale_1", - "api_qc_rationale_1610", - "api_qc_rationale_1620", - "api_qc_rationale_1630", - "api_qc_rationale_1679", - "api_qc_rationale_1736", - "api_qc_rationale_1762", + "api_qc_rationale_1614", + "api_qc_rationale_1624", + "api_qc_rationale_1634", + "api_qc_rationale_1683", + "api_qc_rationale_1742", + "api_qc_rationale_1768", "api_qc_sms_notification_togglestatusbody", "api_qc_stockcheckcreatebody", "api_qc_stockcheckunusedlineitem", @@ -1078,6 +1105,7 @@ "api_research_donation_convertfromstoragebody", "api_research_donation_donationcreatebody", "api_research_donation_donationupdatebody", + "api_research_donation_rationale_1", "api_research_donation_statuschangebody", "api_sample_reception_allocatelabstoragecodesbody", "api_sample_reception_checkitembody", @@ -1088,10 +1116,6 @@ "api_sample_reception_samplereceptionupdatebody", "api_sample_sms_notification_togglestatusbody", "api_storage_entry_sms_notification_togglestatusbody", - "api_workflow_processdefcreatebody", - "api_workflow_processdefupdatebody", - "api_workflow_publishversionbody", - "api_workflow_startinstancebody", "basemodel", "core_data_scope_rationale_1", "core_data_scope_rationale_113", @@ -1102,30 +1126,7 @@ "core_response_pageresult", "core_response_py", "core_response_responsemodel", - "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_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_py", - "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_sample_code_batch_generate_sample_codes", - "crud_sample_code_rationale_261", "models_models_bizattachment", - "models_models_bizcollectionprotocolno", - "models_models_bizcustomer", - "models_models_bizsamplecode", "models_models_sysdept", "models_models_sysrole", "models_models_sysuser", @@ -1135,8 +1136,10 @@ "schemas_auth_config", "schemas_auth_loginrequest", "schemas_auth_loginresponse", + "schemas_auth_profileupdaterequest", "schemas_auth_py", "schemas_auth_rationale_1", + "schemas_auth_rationale_55", "schemas_auth_resetpasswordrequest", "schemas_auth_usercreate", "schemas_auth_userresponse", @@ -1160,6 +1163,17 @@ "schemas_category_parameter_rationale_1", "schemas_category_parameter_rationale_19", "schemas_category_py", + "schemas_cell_product_cellproductbatchitem", + "schemas_cell_product_cellproductcreate", + "schemas_cell_product_cellproductlistquery", + "schemas_cell_product_cellproductupdate", + "schemas_cell_product_coerce_date_fields", + "schemas_cell_product_coerce_optional_datetime", + "schemas_cell_product_py", + "schemas_cell_product_rationale_10", + "schemas_cell_product_validate_passage", + "schemas_cell_product_validate_status", + "schemas_cell_product_validate_viability", "schemas_common_deleteinput", "schemas_common_idinput", "schemas_common_paginationparams", @@ -1296,10 +1310,23 @@ "schemas_price_list_productpriceresponse", "schemas_price_list_py", "schemas_price_list_rationale_1", + "schemas_process_route_processroutecreatebody", + "schemas_process_route_processrouteupdatebody", + "schemas_process_route_py", + "schemas_process_route_rationale_1", + "schemas_process_route_setcurrentbody", + "schemas_process_route_stepaddbody", "schemas_process_route_stepconsumableitem", + "schemas_process_route_stepconsumableupdatebody", + "schemas_process_route_stepcopybody", "schemas_process_route_stepdatacollectionitem", + "schemas_process_route_stepdatacollectionupdatebody", "schemas_process_route_stepoutputitem", + "schemas_process_route_stepoutputupdatebody", "schemas_process_route_stepreagentitem", + "schemas_process_route_stepreagentupdatebody", + "schemas_process_route_stepreorderbody", + "schemas_process_route_stepupdatebody", "schemas_product_banner_productbannerbase", "schemas_product_banner_productbannercreate", "schemas_product_banner_productbannercreatebatch", @@ -1310,7 +1337,6 @@ "schemas_product_banner_productbannerupdate", "schemas_product_banner_py", "schemas_product_banner_rationale_1", - "schemas_product_config", "schemas_product_detail_media_productdetailmediabase", "schemas_product_detail_media_productdetailmediacreate", "schemas_product_detail_media_productdetailmediacreatebatch", @@ -1340,18 +1366,6 @@ "schemas_product_parameter_value_productparametervaluewithparameterresponse", "schemas_product_parameter_value_py", "schemas_product_parameter_value_rationale_1", - "schemas_product_productbase", - "schemas_product_productcategorybase", - "schemas_product_productcategorycreate", - "schemas_product_productcategoryresponse", - "schemas_product_productcreate", - "schemas_product_productresponse", - "schemas_product_productunitbase", - "schemas_product_productunitcreate", - "schemas_product_productunitresponse", - "schemas_product_productupdate", - "schemas_product_py", - "schemas_product_rationale_1", "schemas_product_review_config", "schemas_product_review_media_config", "schemas_product_review_media_productreviewmediabase", @@ -1376,8 +1390,28 @@ "schemas_product_review_productreviewupdate", "schemas_product_review_py", "schemas_product_review_rationale_1", + "schemas_production_task_productiontaskassigneeupdate", + "schemas_production_task_productiontaskcreate", + "schemas_production_task_productiontaskforwardbody", "schemas_production_task_productiontasklistquery", + "schemas_production_task_productiontaskstatusupdate", + "schemas_production_task_productiontaskupdate", + "schemas_production_task_py", + "schemas_production_task_taskinputitem", + "schemas_production_task_taskoutputitem", + "schemas_production_task_taskstepadd", + "schemas_production_task_taskstepdatacollectionitem", + "schemas_production_task_taskstepmaterialitem", + "schemas_production_task_taskstepoutputitem", + "schemas_production_task_taskstepreorderbody", + "schemas_production_task_taskstepupdate", "schemas_production_work_order_productionworkorderbase", + "schemas_production_work_order_productionworkordercomplete", + "schemas_production_work_order_productionworkorderconfigurebody", + "schemas_production_work_order_productionworkordercreate", + "schemas_production_work_order_productionworkorderlistquery", + "schemas_production_work_order_productionworkorderupdate", + "schemas_production_work_order_py", "schemas_qc_task_py", "schemas_qc_task_qctaskcreatebody", "schemas_qc_work_order_outboundqcdetailapplication", @@ -1386,6 +1420,7 @@ "schemas_qc_work_order_outboundqcdetailpatient", "schemas_qc_work_order_outboundqcdetailproduct", "schemas_qc_work_order_outboundqcdetailresponse", + "schemas_qc_work_order_productionqcworkordercreatebody", "schemas_qc_work_order_py", "schemas_qc_work_order_qcworkordercreatebody", "schemas_qc_work_order_qcworkorderupdatebody", @@ -1457,7 +1492,6 @@ "schemas_workflow_versionresponse" ], "2": [ - "api_env_detect_rationale_1", "api_insurance_company_rationale_1", "api_operations_accesslogcreatebody", "api_operations_accesslogupdatebody", @@ -1476,7 +1510,11 @@ "api_operations_storageslotupdatebody", "api_operations_uvdisinfectlogcreatebody", "api_operations_uvdisinfectlogupdatebody", + "api_workflow_processdefcreatebody", + "api_workflow_processdefupdatebody", + "api_workflow_publishversionbody", "api_workflow_rationale_135", + "api_workflow_startinstancebody", "api_workflow_taskactionbody", "base", "crud_clean_room_rationale_1", @@ -1567,7 +1605,6 @@ "crud_qc_material_usage_rationale_772", "crud_qc_material_usage_rationale_872", "crud_qc_material_usage_rationale_957", - "crud_storage_facility_rationale_298", "crud_workflow_rationale_1", "models_clinical_payment_bizpilotpayment", "models_clinical_payment_py", @@ -1644,12 +1681,16 @@ "models_models_bizprocessroutestepreagent", "models_models_bizproductiontaskhandover", "models_models_bizproductiontaskstepconfiguredreagent", + "models_models_bizprotocolaudit", + "models_models_bizprotocolinvoicerequest", + "models_models_bizprotocolinvoicerequestitem", "models_models_bizqcsmsnotification", "models_models_bizqctaskassignee", "models_models_bizqcthirdpartycompany", "models_models_bizreagent", "models_models_bizreagentstocklog", "models_models_bizsamplereceptioncheckitem", + "models_models_bizsamplereceptioncheckresult", "models_models_bizsamplesmsnotification", "models_models_bizsopdocument", "models_models_bizstorageentrysmsnotification", @@ -1833,19 +1874,6 @@ "crud_consumable_is_enabled_status", "crud_consumable_list_consumables", "crud_consumable_norm_status", - "crud_consumable_pack_create_consumable_pack", - "crud_consumable_pack_get_consumable_pack", - "crud_consumable_pack_get_pack_detail", - "crud_consumable_pack_item_row_to_dict", - "crud_consumable_pack_list_all_packs", - "crud_consumable_pack_list_consumable_packs", - "crud_consumable_pack_pack_code_exists", - "crud_consumable_pack_py", - "crud_consumable_pack_rationale_1", - "crud_consumable_pack_row_to_dict", - "crud_consumable_pack_soft_delete_consumable_pack", - "crud_consumable_pack_total_pages", - "crud_consumable_pack_update_consumable_pack", "crud_consumable_py", "crud_consumable_rationale_1", "crud_consumable_row_to_dict", @@ -1854,6 +1882,16 @@ "crud_consumable_stock_out", "crud_consumable_total_pages", "crud_consumable_update_consumable", + "crud_dict_data_create_dict_data", + "crud_dict_data_get_dict_data", + "crud_dict_data_list_dict_data", + "crud_dict_data_list_dict_data_options", + "crud_dict_data_py", + "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_equipment_snapshot_join_equipment_ids", "crud_equipment_snapshot_parse_equipment_ids", "crud_equipment_snapshot_py", @@ -1897,6 +1935,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", @@ -1916,11 +1955,19 @@ "crud_pilot_service_gmcp_agreement_editable", "crud_pilot_service_gmcp_has_purchase_lock", "crud_pilot_service_insert_package_items", + "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_invoices", + "crud_pilot_service_list_channel_mail_addresses", "crud_pilot_service_list_channel_product_quotas", "crud_pilot_service_list_channel_service_orders", "crud_pilot_service_list_channels", + "crud_pilot_service_list_checkup_institution_invoices", "crud_pilot_service_list_checkup_institution_packages", + "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", @@ -1937,16 +1984,25 @@ "crud_pilot_service_resolve_service_order_purchase_total", "crud_pilot_service_rollback_purchase_txn_holdings", "crud_pilot_service_rollback_unsubscribe_txn_holdings", + "crud_pilot_service_row_to_dict_cell_product_price", + "crud_pilot_service_row_to_dict_cell_product_spec", + "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_invoice", + "crud_pilot_service_row_to_dict_channel_mail_address", "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_invoice", "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", @@ -1989,6 +2045,15 @@ "crud_pilot_service_void_channel_agreement", "crud_pilot_service_void_service_order", "crud_pilot_service_void_txn", + "crud_post_create_post", + "crud_post_get_post", + "crud_post_list_posts", + "crud_post_post_code_exists", + "crud_post_py", + "crud_post_row_to_dict", + "crud_post_soft_delete_post", + "crud_post_total_pages", + "crud_post_update_post", "crud_process_consumable_row_to_dict", "crud_process_create_process", "crud_process_create_sub_consumable", @@ -2075,7 +2140,6 @@ "crud_production_task_create_production_task", "crud_production_task_delete_production_task", "crud_production_task_delete_task_step", - "crud_production_task_enrich_assignee_names", "crud_production_task_enrich_handover_times", "crud_production_task_enrich_outbound_task_items", "crud_production_task_fmt_dt", @@ -2084,7 +2148,6 @@ "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_py", "crud_production_task_reassign_production_task", @@ -2128,9 +2191,53 @@ "crud_reagent_stock_in", "crud_reagent_stock_out", "crud_reagent_total_pages", - "crud_reagent_update_reagent" + "crud_reagent_update_reagent", + "crud_site_create_site", + "crud_site_get_site", + "crud_site_list_sites", + "crud_site_py", + "crud_site_row_to_dict", + "crud_site_site_code_exists", + "crud_site_soft_delete_site", + "crud_site_total_pages", + "crud_site_update_site" ], "4": [ + "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_protocol_nos", + "api_basic_info_list_sample_codes", + "api_basic_info_normalize_date_bound", + "api_basic_info_protocolnobatchgeneratebody", + "api_basic_info_protocolnobatchissuebody", + "api_basic_info_protocolnobatchrevokebody", + "api_basic_info_protocolnocreatebody", + "api_basic_info_protocolnoupdatebody", + "api_basic_info_py", + "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_update_collection_region", "api_ethnic_list_ethnics_for_select", "api_ethnic_py", "core_data_scope_apply_data_scope", @@ -2139,23 +2246,27 @@ "core_data_scope_py", "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_api_request_log_apirequestlogcrud", "crud_api_request_log_delete", "crud_api_request_log_get", "crud_api_request_log_get_multi_with_filters", "crud_api_request_log_py", "crud_base_crudbase_count", + "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_py", + "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_active_invoiced_payment_detail_ids", "crud_collection_protocol_add_months_yyyymmdd", + "crud_collection_protocol_align_fq_payment_details_payload", "crud_collection_protocol_apply_payment_detail_list_filters", + "crud_collection_protocol_apply_submit_receipt_finance", "crud_collection_protocol_audit_to_dict", "crud_collection_protocol_build_installment_summary", "crud_collection_protocol_calc_installment_due_amounts", @@ -2171,6 +2282,7 @@ "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", @@ -2183,6 +2295,7 @@ "crud_collection_protocol_get_party_customer", "crud_collection_protocol_get_payment_by_protocol_id", "crud_collection_protocol_get_protocol_detail_bundle", + "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "crud_collection_protocol_get_storage_cert", "crud_collection_protocol_invoice_request_item_to_dict", "crud_collection_protocol_invoice_request_list_query", @@ -2208,8 +2321,29 @@ "crud_collection_protocol_load_site_name_map", "crud_collection_protocol_load_unit_name_map", "crud_collection_protocol_lookup_attachment_by_url", + "crud_collection_protocol_migrate_sample_child_refs_on_replace", + "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_py", + "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_normalize_attachment_url_key", "crud_collection_protocol_normalize_date_bound", + "crud_collection_protocol_normalize_fields", "crud_collection_protocol_normalize_yyyymmdd_date", "crud_collection_protocol_optional_decimal", "crud_collection_protocol_pack_invoice_request_with_items", @@ -2221,23 +2355,31 @@ "crud_collection_protocol_payment_details_payload_unchanged", "crud_collection_protocol_payment_to_dict", "crud_collection_protocol_pick_storage_in_date", + "crud_collection_protocol_pop_attachment_urls", "crud_collection_protocol_protocol_to_dict", "crud_collection_protocol_py", "crud_collection_protocol_reject_receipt", "crud_collection_protocol_reject_refund", "crud_collection_protocol_rows_to_payment_detail_dicts", "crud_collection_protocol_sample_to_dict", + "crud_collection_protocol_save_payment_details", + "crud_collection_protocol_save_samples", "crud_collection_protocol_soft_delete_collection_protocol", "crud_collection_protocol_soft_delete_transports_for_protocol", "crud_collection_protocol_storage_cert_to_dict", "crud_collection_protocol_storage_in_date_to_yyyymmdd", + "crud_collection_protocol_submit_receipt_finance", "crud_collection_protocol_today_yyyymmdd", "crud_collection_protocol_total_pages", "crud_collection_protocol_transport_to_dict", "crud_collection_protocol_update_collection_protocol", - "crud_collection_protocol_upsert_fullmoon_todo", + "crud_collection_protocol_upsert_collection_info", "crud_collection_protocol_upsert_party_customer", + "crud_collection_protocol_upsert_payment", + "crud_collection_protocol_upsert_storage_cert", "crud_collection_protocol_user_nick_name_map", + "crud_collection_protocol_validate_receipt_finance_submit_ready", + "crud_collection_protocol_validate_sample_codes_not_used", "crud_collection_protocol_yyyymmdd_from_date_param", "crud_collection_region_create_collection_region", "crud_collection_region_create_hospital", @@ -2248,11 +2390,23 @@ "crud_collection_region_list_collection_regions", "crud_collection_region_list_hospitals", "crud_collection_region_py", + "crud_collection_region_region_to_dict", "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_py", + "crud_customer_rationale_1", + "crud_customer_row_to_dict", + "crud_customer_soft_delete_customer", + "crud_customer_total_pages", + "crud_customer_update_customer", "crud_ethnic_list_ethnics", "crud_ethnic_py", "crud_ethnic_rationale_1", @@ -2290,16 +2444,7 @@ "crud_material_usage_unit_price_for_row", "crud_material_usage_usage_unit_label", "crud_material_usage_user_nick_name_map", - "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_agreements", - "crud_pilot_service_list_channel_mail_addresses", - "crud_pilot_service_list_checkup_institution_invoices", - "crud_pilot_service_list_checkup_institution_projects", - "crud_pilot_service_list_checkup_institutions", - "crud_pilot_service_row_to_dict_checkup_institution_project", "crud_production_material_filter_material_type", "crud_production_material_usage_amount_for_row", "crud_production_material_usage_batch_map", @@ -2347,53 +2492,6 @@ "crud_qc_lab_test_item_row_to_dict", "crud_qc_lab_test_item_soft_delete_lab_item", "crud_qc_lab_test_item_update_lab_item", - "crud_qc_material_usage_amount_for_row", - "crud_qc_material_usage_batch_map", - "crud_qc_material_usage_deduct_for_task", - "crud_qc_material_usage_deduct_task_usage_legacy_batch", - "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_py", - "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", - "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_py", - "crud_qc_sms_notification_qc_complete_time", - "crud_qc_sms_notification_qc_status_label", - "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_research_donation_sample_collection_apply_sample_status_filter", "crud_research_donation_sample_collection_base_query", "crud_research_donation_sample_collection_fmt_dt", @@ -2402,6 +2500,7 @@ "crud_research_donation_sample_collection_row_to_dict", "crud_research_donation_sample_collection_sample_status_label", "crud_research_donation_sample_collection_total_pages", + "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", @@ -2410,6 +2509,7 @@ "crud_sample_code_parse_issued_time", "crud_sample_code_py", "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", @@ -2420,253 +2520,28 @@ "crud_workflow_list_completed_tasks", "crud_workflow_list_my_instances", "crud_workflow_list_pending_tasks", - "crud_workflow_task_row_to_dict" + "crud_workflow_task_row_to_dict", + "models_models_bizcollectionprotocolno", + "models_models_bizcustomer", + "models_models_bizsamplecode", + "services_protocol_payment_installment_add_days_yyyymmdd", + "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "services_protocol_payment_installment_add_months_yyyymmdd", + "services_protocol_payment_installment_calc_fq_installment_due_date", + "services_protocol_payment_installment_calc_installment_due_amounts_by_ratios", + "services_protocol_payment_installment_calc_installment_due_amounts_inline", + "services_protocol_payment_installment_calc_unpaid_amounts_by_ratios", + "services_protocol_payment_installment_is_legacy_installment_ratios", + "services_protocol_payment_installment_parse_installment_ratios", + "services_protocol_payment_installment_py", + "services_protocol_payment_installment_rationale_1", + "services_protocol_payment_installment_rationale_138", + "services_protocol_payment_installment_rationale_160", + "services_protocol_payment_installment_rationale_45", + "services_protocol_payment_installment_rationale_70", + "services_protocol_payment_installment_resolve_installment_due_amounts" ], "5": [ - "core_db_collation_eq_unicode", - "core_db_collation_like_unicode", - "core_db_collation_py", - "core_db_collation_rationale_1", - "core_db_collation_rationale_12", - "core_db_collation_rationale_7", - "core_db_collation_unicode_ci", - "crud_collection_protocol_format_attachment_file_size", - "crud_collection_protocol_urls_to_attachment_list", - "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_py", - "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_production_work_order_outbound_work_order_ids_by_keyword", - "crud_qc_task_apply_task_result", - "crud_qc_task_assert_task_assignee", - "crud_qc_task_assignee_active_users_in_tenant", - "crud_qc_task_assignee_enrich_tasks_with_assignees", - "crud_qc_task_assignee_is_user_assignee", - "crud_qc_task_assignee_list_assignees_by_task_ids", - "crud_qc_task_assignee_py", - "crud_qc_task_assignee_rationale_63", - "crud_qc_task_assignee_soft_delete_assignees_by_task_ids", - "crud_qc_task_assignee_sync_assignees_for_task", - "crud_qc_task_assignee_validate_assignee_user_ids", - "crud_qc_task_complete_task", - "crud_qc_task_conclusion_label", - "crud_qc_task_create_qc_task_manual", - "crud_qc_task_create_task_for_line", - "crud_qc_task_dec", - "crud_qc_task_delete_qc_task", - "crud_qc_task_enrich_tasks_reception_fields", - "crud_qc_task_fmt_dt", - "crud_qc_task_gen_task_no", - "crud_qc_task_get_task", - "crud_qc_task_get_task_detail", - "crud_qc_task_list_mine_tasks", - "crud_qc_task_list_tasks", - "crud_qc_task_list_tasks_by_work_order", - "crud_qc_task_py", - "crud_qc_task_set_task_remark", - "crud_qc_task_start_task", - "crud_qc_task_task_row_to_dict", - "crud_qc_task_task_to_dict", - "crud_qc_task_task_work_order_context", - "crud_qc_work_order_accept_conclusion_label", - "crud_qc_work_order_apply_item_assignees", - "crud_qc_work_order_build_outbound_pilot_context_by_schedule", - "crud_qc_work_order_configure_temp_qc_work_order", - "crud_qc_work_order_configure_work_order", - "crud_qc_work_order_create_outbound_qc_work_order", - "crud_qc_work_order_create_qc_work_order_from_production", - "crud_qc_work_order_create_qc_work_order_manual", - "crud_qc_work_order_create_temp_qc_work_order", - "crud_qc_work_order_create_work_order_from_reception", - "crud_qc_work_order_dec", - "crud_qc_work_order_delete_qc_work_order", - "crud_qc_work_order_delete_temp_qc_work_order", - "crud_qc_work_order_effective_donation_sample_id", - "crud_qc_work_order_effective_protocol_sample_id", - "crud_qc_work_order_effective_reception_source", - "crud_qc_work_order_enrich_outbound_work_orders", - "crud_qc_work_order_enrich_production_work_order_refs", - "crud_qc_work_order_enrich_work_order_cell_products", - "crud_qc_work_order_enrich_work_order_list_items", - "crud_qc_work_order_fmt_dt", - "crud_qc_work_order_gen_daily_no", - "crud_qc_work_order_get_outbound_qc_detail", - "crud_qc_work_order_get_process_qc_info_map_for_samples", - "crud_qc_work_order_get_qc_info_map_for_samples", - "crud_qc_work_order_get_schedule_gate_qc_info", - "crud_qc_work_order_get_task_by_source_line_id", - "crud_qc_work_order_get_temp_qc_work_order", - "crud_qc_work_order_get_temp_qc_work_order_detail", - "crud_qc_work_order_get_work_order", - "crud_qc_work_order_get_work_order_detail", - "crud_qc_work_order_lab_lines", - "crud_qc_work_order_list_cell_product_options_for_production_work_order", - "crud_qc_work_order_list_process_qc_info_for_sample", - "crud_qc_work_order_list_process_qc_info_for_schedule", - "crud_qc_work_order_list_temp_qc_work_orders", - "crud_qc_work_order_list_work_orders", - "crud_qc_work_order_load_sample_type_name_map", - "crud_qc_work_order_normalize_date_bound", - "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", - "crud_qc_work_order_process_qc_info_items_from_wos", - "crud_qc_work_order_py", - "crud_qc_work_order_qc_biz_type_label", - "crud_qc_work_order_qc_info_item", - "crud_qc_work_order_reception_source_label", - "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", - "crud_qc_work_order_resolve_reception_id_for_work_order_detail", - "crud_qc_work_order_sample_type_name_for_item", - "crud_qc_work_order_sample_type_name_for_reception", - "crud_qc_work_order_soft_delete_tasks_by_source_line_ids", - "crud_qc_work_order_sync_work_order_lab_items", - "crud_qc_work_order_sync_work_order_third_party_items", - "crud_qc_work_order_temp_lab_lines", - "crud_qc_work_order_temp_tasks", - "crud_qc_work_order_temp_third_lines", - "crud_qc_work_order_third_lines", - "crud_qc_work_order_try_complete_temp_qc_work_order", - "crud_qc_work_order_try_complete_work_order", - "crud_qc_work_order_update_qc_work_order", - "crud_qc_work_order_update_temp_qc_work_order", - "crud_qc_work_order_user_nick_name_map", - "crud_qc_work_order_validate_cell_product_id", - "crud_qc_work_order_wo_to_dict", - "crud_qc_work_order_work_order_qc_biz_type", - "crud_sample_reception_check_result_get_check_results_for_reception", - "crud_sample_reception_check_result_legacy_results_from_reception", - "crud_sample_reception_check_result_list_results_by_reception_ids", - "crud_sample_reception_check_result_py", - "crud_sample_reception_check_result_result_to_dict", - "crud_sample_reception_check_result_save_reception_check_results", - "crud_sample_reception_check_result_soft_delete_reception_check_results", - "crud_sample_reception_check_result_sync_legacy_columns_from_results", - "crud_sample_reception_create_sample_reception", - "crud_sample_reception_dec", - "crud_sample_reception_donation_ids_matching_lab_storage_keyword", - "crud_sample_reception_donation_rows_to_sample_list_items", - "crud_sample_reception_donation_sample_detail_rows_query", - "crud_sample_reception_donation_sample_id_col", - "crud_sample_reception_donation_sample_pending_query", - "crud_sample_reception_fmt_dt", - "crud_sample_reception_format_lab_storage_codes_csv", - "crud_sample_reception_get_reception_by_id", - "crud_sample_reception_get_reception_by_sample_code", - "crud_sample_reception_get_receptions_map_for_donation_samples", - "crud_sample_reception_get_receptions_map_for_samples", - "crud_sample_reception_lab_code_allocate_lab_storage_codes", - "crud_sample_reception_lab_code_allocate_one_seq", - "crud_sample_reception_lab_code_assert_lab_storage_code_available", - "crud_sample_reception_lab_code_format_lab_storage_code", - "crud_sample_reception_lab_code_max_existing_seq", - "crud_sample_reception_lab_code_parse_reception_date", - "crud_sample_reception_lab_code_py", - "crud_sample_reception_lab_code_rationale_1", - "crud_sample_reception_lab_code_reception_time_date_str", - "crud_sample_reception_lab_code_sync_lab_storage_seq_after_use", - "crud_sample_reception_lab_code_sync_sequence_from_existing", - "crud_sample_reception_lab_code_validate_and_parse_lab_storage_code", - "crud_sample_reception_lab_storage_keyword_like", - "crud_sample_reception_list_pending_protocol_samples", - "crud_sample_reception_list_received_protocol_samples", - "crud_sample_reception_normalize_date_bound", - "crud_sample_reception_protocol_ids_matching_lab_storage_keyword", - "crud_sample_reception_py", - "crud_sample_reception_reception_detail_item", - "crud_sample_reception_reception_ids_matching_lab_storage_keyword", - "crud_sample_reception_reception_sample_code", - "crud_sample_reception_reception_to_dict", - "crud_sample_reception_rows_to_sample_list_items", - "crud_sample_reception_sample_codes_matching_lab_storage_keyword", - "crud_sample_reception_sample_detail_rows_query", - "crud_sample_reception_sample_pending_query", - "crud_sample_reception_update_sample_reception", - "crud_sample_sms_notification_accept_conclusion_label", - "crud_sample_sms_notification_base_query", - "crud_sample_sms_notification_ensure_notification", - "crud_sample_sms_notification_fetch_sample_type_name", - "crud_sample_sms_notification_fmt_dt", - "crud_sample_sms_notification_generate_sms_content", - "crud_sample_sms_notification_list_notifications", - "crud_sample_sms_notification_normalize_date_bound", - "crud_sample_sms_notification_py", - "crud_sample_sms_notification_resolve_notification", - "crud_sample_sms_notification_row_to_dict", - "crud_sample_sms_notification_toggle_notification_status", - "crud_sample_sms_notification_total_pages", - "crud_sample_sms_notification_unicode_ci", - "crud_sop_document_create_sop_document", - "crud_sop_document_get_sop_document", - "crud_sop_document_list_sop_documents", - "crud_sop_document_py", - "crud_sop_document_rationale_1", - "crud_sop_document_row_to_dict", - "crud_sop_document_soft_delete_sop_document", - "crud_sop_document_sop_code_exists", - "crud_sop_document_total_pages", - "crud_sop_document_update_sop_document", - "crud_storage_entry_sms_notification_base_query", - "crud_storage_entry_sms_notification_ensure_notification", - "crud_storage_entry_sms_notification_fetch_sample_type_name", - "crud_storage_entry_sms_notification_fmt_dt", - "crud_storage_entry_sms_notification_generate_sms_content", - "crud_storage_entry_sms_notification_list_notifications", - "crud_storage_entry_sms_notification_normalize_date_bound", - "crud_storage_entry_sms_notification_py", - "crud_storage_entry_sms_notification_resolve_notification", - "crud_storage_entry_sms_notification_row_to_dict", - "crud_storage_entry_sms_notification_storage_status_label", - "crud_storage_entry_sms_notification_toggle_notification_status", - "crud_storage_entry_sms_notification_total_pages", - "crud_storage_entry_sms_notification_unicode_ci", - "crud_storage_release_review_batch_store_samples", - "crud_storage_release_review_batch_submit_review", - "crud_storage_release_review_build_cell_storage_protocol_info", - "crud_storage_release_review_build_cell_storage_transport_info", - "crud_storage_release_review_build_gate_qc_info", - "crud_storage_release_review_build_process_qc_info_list", - "crud_storage_release_review_build_production_info", - "crud_storage_release_review_build_reception_info", - "crud_storage_release_review_build_research_donation_protocol_info", - "crud_storage_release_review_build_research_donation_transport_info", - "crud_storage_release_review_create_review_from_reception", - "crud_storage_release_review_enrich_review_list_items", - "crud_storage_release_review_fmt_dt", - "crud_storage_release_review_get_review_detail", - "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_py", - "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", - "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_py", - "services_qc_work_order_fee_summary_received_amount_from_details", - "services_qc_work_order_fee_summary_sort_payment_details" - ], - "6": [ "api_collection_protocol_auditcreatebody", "api_collection_protocol_batchdetailidsbody", "api_collection_protocol_batchrefundfinancesubmitbody", @@ -2675,7 +2550,6 @@ "api_collection_protocol_invoicerequestcompletebody", "api_collection_protocol_invoicerequestcreatebody", "api_collection_protocol_paymentdetaildraftbody", - "api_collection_protocol_persist_protocol_sub_resources", "api_collection_protocol_protocolcreatebody", "api_collection_protocol_protocolupdatebody", "api_collection_protocol_rationale_1", @@ -2694,13 +2568,6 @@ "crud_clinical_payment_rationale_143", "crud_clinical_payment_rationale_173", "crud_clinical_payment_rationale_74", - "crud_collection_protocol_align_fq_payment_details_payload", - "crud_collection_protocol_attachments_to_urls", - "crud_collection_protocol_create_invoice_request", - "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", - "crud_collection_protocol_migrate_sample_child_refs_on_replace", - "crud_collection_protocol_normalize_fields", - "crud_collection_protocol_pop_attachment_urls", "crud_collection_protocol_rationale_1", "crud_collection_protocol_rationale_104", "crud_collection_protocol_rationale_140", @@ -2717,13 +2584,6 @@ "crud_collection_protocol_rationale_580", "crud_collection_protocol_rationale_627", "crud_collection_protocol_rationale_70", - "crud_collection_protocol_save_payment_details", - "crud_collection_protocol_save_sample_transports", - "crud_collection_protocol_save_samples", - "crud_collection_protocol_upsert_collection_info", - "crud_collection_protocol_upsert_payment", - "crud_collection_protocol_upsert_storage_cert", - "crud_collection_protocol_validate_sample_codes_not_used", "crud_collection_region_rationale_29", "crud_outbound_release_review_rationale_139", "crud_outbound_release_review_rationale_513", @@ -2767,24 +2627,24 @@ "crud_production_work_order_rationale_784", "crud_production_work_order_rationale_835", "crud_production_work_order_rationale_861", - "crud_protocol_donation_convert_active_link_query", - "crud_protocol_donation_convert_create_convert_link", - "crud_protocol_donation_convert_get_convert_partner", - "crud_protocol_donation_convert_get_partner_sample_codes", - "crud_protocol_donation_convert_has_active_convert_link", - "crud_protocol_donation_convert_py", "crud_protocol_donation_convert_rationale_1", "crud_protocol_donation_convert_rationale_132", "crud_protocol_donation_convert_rationale_198", "crud_protocol_donation_convert_rationale_273", "crud_protocol_donation_convert_rationale_35", "crud_protocol_donation_convert_rationale_84", - "crud_protocol_donation_convert_upsert_convert_link_for_to_storage", "crud_protocol_sample_collection_rationale_1", "crud_qc_sms_notification_rationale_32", "crud_qc_task_rationale_613", "crud_qc_task_result_rationale_43", "crud_qc_task_result_rationale_96", + "crud_qc_work_order_create_outbound_qc_work_order", + "crud_qc_work_order_create_qc_work_order_from_production", + "crud_qc_work_order_create_qc_work_order_manual", + "crud_qc_work_order_create_temp_qc_work_order", + "crud_qc_work_order_create_work_order_from_reception", + "crud_qc_work_order_gen_daily_no", + "crud_qc_work_order_list_cell_product_options_for_production_work_order", "crud_qc_work_order_rationale_1009", "crud_qc_work_order_rationale_1293", "crud_qc_work_order_rationale_1370", @@ -2807,6 +2667,7 @@ "crud_qc_work_order_rationale_740", "crud_qc_work_order_rationale_860", "crud_qc_work_order_rationale_89", + "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "crud_research_donation_convert_from_storage", "crud_research_donation_rationale_1", "crud_research_donation_rationale_106", @@ -2817,12 +2678,8 @@ "crud_research_donation_rationale_779", "crud_research_donation_rationale_850", "crud_research_donation_rationale_95", - "crud_research_donation_resolve_donation_payload", "crud_research_donation_sample_collection_rationale_1", "crud_research_donation_submit_audit", - "crud_sample_reception_check_result_rationale_108", - "crud_sample_reception_check_result_rationale_133", - "crud_sample_reception_check_result_rationale_171", "crud_sample_reception_rationale_1122", "crud_sample_reception_rationale_1166", "crud_sample_reception_rationale_118", @@ -2864,11 +2721,8 @@ "models_models_bizproductiontaskstepoutput", "models_models_bizproductiontaskstepreagent", "models_models_bizproductionworkorder", - "models_models_bizprotocolaudit", "models_models_bizprotocolcollectioninfo", "models_models_bizprotocolfullmoontodo", - "models_models_bizprotocolinvoicerequest", - "models_models_bizprotocolinvoicerequestitem", "models_models_bizprotocolpartycustomer", "models_models_bizprotocolpayment", "models_models_bizprotocolpaymentdetail", @@ -2882,7 +2736,6 @@ "models_models_bizqcworkorderlabitem", "models_models_bizqcworkorderthirditem", "models_models_bizsamplereception", - "models_models_bizsamplereceptioncheckresult", "models_models_bizstoragereleasereview", "models_models_syssite", "models_research_donation_bizprotocoldonationconvert", @@ -2900,9 +2753,211 @@ "models_research_donation_rationale_185", "models_research_donation_rationale_43", "models_research_donation_rationale_64", - "services_protocol_payment_installment_parse_installment_ratios", "services_qc_work_order_fee_summary_rationale_1" ], + "6": [ + "core_db_collation_eq_unicode", + "core_db_collation_like_unicode", + "core_db_collation_py", + "core_db_collation_rationale_1", + "core_db_collation_rationale_12", + "core_db_collation_rationale_7", + "core_db_collation_unicode_ci", + "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_py", + "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_production_task_list_production_tasks", + "crud_production_work_order_accept_conclusion_label", + "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_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_outbound_work_order_ids_by_keyword", + "crud_production_work_order_production_info_item", + "crud_production_work_order_production_task_info", + "crud_production_work_order_py", + "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", + "crud_qc_task_apply_task_result", + "crud_qc_task_assert_task_assignee", + "crud_qc_task_assignee_active_users_in_tenant", + "crud_qc_task_assignee_enrich_tasks_with_assignees", + "crud_qc_task_assignee_is_user_assignee", + "crud_qc_task_assignee_list_assignees_by_task_ids", + "crud_qc_task_assignee_py", + "crud_qc_task_assignee_rationale_63", + "crud_qc_task_assignee_soft_delete_assignees_by_task_ids", + "crud_qc_task_assignee_sync_assignees_for_task", + "crud_qc_task_assignee_validate_assignee_user_ids", + "crud_qc_task_complete_task", + "crud_qc_task_conclusion_label", + "crud_qc_task_create_qc_task_manual", + "crud_qc_task_create_task_for_line", + "crud_qc_task_dec", + "crud_qc_task_delete_qc_task", + "crud_qc_task_enrich_tasks_reception_fields", + "crud_qc_task_fmt_dt", + "crud_qc_task_gen_task_no", + "crud_qc_task_get_task", + "crud_qc_task_get_task_detail", + "crud_qc_task_list_mine_tasks", + "crud_qc_task_list_tasks", + "crud_qc_task_list_tasks_by_work_order", + "crud_qc_task_py", + "crud_qc_task_set_task_remark", + "crud_qc_task_start_task", + "crud_qc_task_task_row_to_dict", + "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_py", + "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_py", + "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_apply_item_assignees", + "crud_qc_work_order_build_outbound_pilot_context_by_schedule", + "crud_qc_work_order_configure_temp_qc_work_order", + "crud_qc_work_order_configure_work_order", + "crud_qc_work_order_dec", + "crud_qc_work_order_delete_qc_work_order", + "crud_qc_work_order_delete_temp_qc_work_order", + "crud_qc_work_order_effective_donation_sample_id", + "crud_qc_work_order_effective_protocol_sample_id", + "crud_qc_work_order_effective_reception_source", + "crud_qc_work_order_enrich_outbound_work_orders", + "crud_qc_work_order_enrich_production_work_order_refs", + "crud_qc_work_order_enrich_work_order_cell_products", + "crud_qc_work_order_enrich_work_order_list_items", + "crud_qc_work_order_fmt_dt", + "crud_qc_work_order_get_outbound_qc_detail", + "crud_qc_work_order_get_process_qc_info_map_for_samples", + "crud_qc_work_order_get_qc_info_map_for_samples", + "crud_qc_work_order_get_schedule_gate_qc_info", + "crud_qc_work_order_get_task_by_source_line_id", + "crud_qc_work_order_get_temp_qc_work_order", + "crud_qc_work_order_get_temp_qc_work_order_detail", + "crud_qc_work_order_get_work_order", + "crud_qc_work_order_get_work_order_detail", + "crud_qc_work_order_lab_lines", + "crud_qc_work_order_list_process_qc_info_for_sample", + "crud_qc_work_order_list_process_qc_info_for_schedule", + "crud_qc_work_order_list_temp_qc_work_orders", + "crud_qc_work_order_list_work_orders", + "crud_qc_work_order_load_sample_type_name_map", + "crud_qc_work_order_normalize_date_bound", + "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", + "crud_qc_work_order_process_qc_info_items_from_wos", + "crud_qc_work_order_py", + "crud_qc_work_order_qc_biz_type_label", + "crud_qc_work_order_qc_info_item", + "crud_qc_work_order_reception_source_label", + "crud_qc_work_order_resolve_reception_id_for_work_order_detail", + "crud_qc_work_order_sample_type_name_for_item", + "crud_qc_work_order_sample_type_name_for_reception", + "crud_qc_work_order_soft_delete_tasks_by_source_line_ids", + "crud_qc_work_order_sync_work_order_lab_items", + "crud_qc_work_order_sync_work_order_third_party_items", + "crud_qc_work_order_temp_lab_lines", + "crud_qc_work_order_temp_tasks", + "crud_qc_work_order_temp_third_lines", + "crud_qc_work_order_third_lines", + "crud_qc_work_order_try_complete_temp_qc_work_order", + "crud_qc_work_order_try_complete_work_order", + "crud_qc_work_order_update_qc_work_order", + "crud_qc_work_order_update_temp_qc_work_order", + "crud_qc_work_order_user_nick_name_map", + "crud_qc_work_order_validate_cell_product_id", + "crud_qc_work_order_wo_to_dict", + "crud_qc_work_order_work_order_qc_biz_type", + "crud_storage_release_review_batch_store_samples", + "crud_storage_release_review_batch_submit_review", + "crud_storage_release_review_build_cell_storage_protocol_info", + "crud_storage_release_review_build_cell_storage_transport_info", + "crud_storage_release_review_build_gate_qc_info", + "crud_storage_release_review_build_process_qc_info_list", + "crud_storage_release_review_build_production_info", + "crud_storage_release_review_build_reception_info", + "crud_storage_release_review_build_research_donation_protocol_info", + "crud_storage_release_review_build_research_donation_transport_info", + "crud_storage_release_review_enrich_review_list_items", + "crud_storage_release_review_fmt_dt", + "crud_storage_release_review_get_review_detail", + "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_py", + "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", + "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_py", + "services_qc_work_order_fee_summary_received_amount_from_details", + "services_qc_work_order_fee_summary_sort_payment_details" + ], "7": [ "crud_material_stock_batch_batch_discard", "crud_material_stock_batch_batch_options", @@ -2977,7 +3032,6 @@ "crud_production_material_stock_batch_batch_options", "crud_production_material_stock_batch_batch_row_to_dict", "crud_production_material_stock_batch_batch_stock_in", - "crud_production_material_stock_batch_batch_stock_out", "crud_production_material_stock_batch_create_batch_and_usage", "crud_production_material_stock_batch_delete_batch", "crud_production_material_stock_batch_discard_batch", @@ -3067,7 +3121,6 @@ "crud_qc_material_stock_check_unused_line_to_dict", "crud_qc_material_stock_check_user_nick_name_map", "crud_qc_material_stock_in", - "crud_qc_material_stock_out", "crud_qc_material_total_pages", "crud_qc_material_update_material", "models_qc_material_bizqcmaterialstockcheck", @@ -3081,7 +3134,7 @@ ], "8": [ "crud_base_crudbase_update", - "crud_clinical_payment_auto_create_payment", + "crud_clinical_payment_map_payments_by_schedule_ids", "crud_collection_protocol_get_protocol_nos_used_in_protocols", "crud_dict_type_create_dict_type", "crud_dict_type_dict_type_code_exists", @@ -3093,6 +3146,33 @@ "crud_dict_type_soft_delete_dict_type", "crud_dict_type_total_pages", "crud_dict_type_update_dict_type", + "crud_outbound_handover_fmt_dt", + "crud_outbound_handover_get_handover_by_schedule", + "crud_outbound_handover_get_outbound_handover", + "crud_outbound_handover_get_outbound_handover_view", + "crud_outbound_handover_handover_row_to_dict", + "crud_outbound_handover_handover_view_dict", + "crud_outbound_handover_parse_handover_time", + "crud_outbound_handover_py", + "crud_outbound_handover_rationale_103", + "crud_outbound_handover_rationale_113", + "crud_outbound_handover_rationale_147", + "crud_outbound_handover_save_outbound_handover", + "crud_outbound_release_material_cell_row_to_dict", + "crud_outbound_release_material_enrich_cell_dicts_with_live_status", + "crud_outbound_release_material_find_outbound_cell_row", + "crud_outbound_release_material_find_outbound_qc_material_row", + "crud_outbound_release_material_fmt_dt", + "crud_outbound_release_material_get_outbound_material", + "crud_outbound_release_material_get_schedule", + "crud_outbound_release_material_legacy_paper_rows_from_attachments", + "crud_outbound_release_material_material_header_to_dict", + "crud_outbound_release_material_paper_row_to_dict", + "crud_outbound_release_material_py", + "crud_outbound_release_material_qc_material_row_to_dict", + "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_pilot_application_complete_application", "crud_pilot_application_create_basic_experiment_sale_schedules", "crud_pilot_application_create_infusion_plan", @@ -3142,7 +3222,6 @@ "crud_pilot_checkup_delete_reserve_item", "crud_pilot_checkup_ensure_checkup_for_patient", "crud_pilot_checkup_generate_checkup_no", - "crud_pilot_checkup_get_checkup_by_application", "crud_pilot_checkup_get_checkup_by_id", "crud_pilot_checkup_list_actual_items", "crud_pilot_checkup_list_checkups_paginated", @@ -3172,8 +3251,34 @@ "crud_pilot_delivery_row_to_dict_delivery", "crud_pilot_delivery_row_to_dict_delivery_material", "crud_pilot_delivery_row_to_dict_delivery_method", - "crud_pilot_delivery_save_delivery_method", "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_py", + "crud_pilot_infusion_confirm_row_to_dict", + "crud_pilot_infusion_confirm_update_infusion_confirm", + "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", + "crud_pilot_infusion_schedule_mgmt_find_service_order_product", + "crud_pilot_infusion_schedule_mgmt_get_infusion_schedule_detail", + "crud_pilot_infusion_schedule_mgmt_get_plan_schedule_course_meta", + "crud_pilot_infusion_schedule_mgmt_get_products_for_schedule", + "crud_pilot_infusion_schedule_mgmt_list_infusion_schedules_mgmt", + "crud_pilot_infusion_schedule_mgmt_py", + "crud_pilot_infusion_schedule_mgmt_resolve_course_display", + "crud_pilot_infusion_schedule_mgmt_resolve_yfk_unit_price", + "crud_pilot_infusion_schedule_mgmt_row_to_dict_product", + "crud_pilot_infusion_schedule_mgmt_row_to_dict_schedule", + "crud_pilot_infusion_schedule_mgmt_schedule_product_to_txn_item", + "crud_pilot_infusion_schedule_mgmt_settlement_remark_marker", + "crud_pilot_infusion_schedule_mgmt_settlement_remark_markers_for_lookup", + "crud_pilot_infusion_schedule_mgmt_update_infusion_status", + "crud_pilot_infusion_schedule_mgmt_update_qc_status", "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", @@ -3184,17 +3289,6 @@ "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_item_param_list_params_by_item", - "crud_qc_item_param_py", - "crud_qc_item_param_row_to_dict", - "crud_qc_item_param_save_params_for_item", - "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_py", - "crud_qc_task_result_resolve_task_item_ref", - "crud_qc_task_result_row_to_dict", - "crud_qc_task_result_save_results_for_task", "crud_role_create_role", "crud_role_get_role", "crud_role_get_role_data_scope", @@ -3207,41 +3301,7 @@ "crud_role_soft_delete_role", "crud_role_total_pages", "crud_role_update_role", - "crud_role_update_role_data_scope", - "crud_storage_facility_batch_create_slots", - "crud_storage_facility_clear_slots_by_facility_node", - "crud_storage_facility_collect_descendant_ids", - "crud_storage_facility_create_facility", - "crud_storage_facility_create_slot", - "crud_storage_facility_get_children", - "crud_storage_facility_get_facility", - "crud_storage_facility_get_slot", - "crud_storage_facility_insert_row_and_shift_slots", - "crud_storage_facility_list_all_facilities", - "crud_storage_facility_list_slots", - "crud_storage_facility_py", - "crud_storage_facility_rationale_1", - "crud_storage_facility_rationale_208", - "crud_storage_facility_rationale_50", - "crud_storage_facility_rationale_77", - "crud_storage_facility_rationale_93", - "crud_storage_facility_row_to_dict", - "crud_storage_facility_slot_to_dict", - "crud_storage_facility_slot_to_dict_for_row", - "crud_storage_facility_soft_delete_facility", - "crud_storage_facility_soft_delete_slot", - "crud_storage_facility_update_facility", - "crud_storage_facility_update_slot", - "services_storage_facility_code_assert_sibling_node_code_unique", - "services_storage_facility_code_build_full_slot_code", - "services_storage_facility_code_build_node_code_path", - "services_storage_facility_code_cascade_refresh_slot_name_snapshots_for_nodes", - "services_storage_facility_code_cascade_refresh_slot_name_snapshots_for_slots", - "services_storage_facility_code_collect_slot_ids_under_nodes", - "services_storage_facility_code_load_facility_map", - "services_storage_facility_code_py", - "services_storage_facility_code_refresh_outbound_release_cell_slot_names", - "services_storage_facility_code_validate_node_code" + "crud_role_update_role_data_scope" ], "9": [ "api_workflow_get_designer_data", @@ -3287,31 +3347,12 @@ "core_api_request_log_middleware_schedule_persist_log", "core_api_request_log_middleware_should_skip", "core_api_request_log_middleware_truncate", - "core_exceptions_businessexception", - "core_exceptions_businessexception_init", - "core_exceptions_invalidstatustransitionexception", - "core_exceptions_invalidstatustransitionexception_init", - "core_exceptions_log_api_request", - "core_exceptions_log_delivery_operation", - "core_exceptions_log_operation", - "core_exceptions_log_order_operation", - "core_exceptions_log_settlement_operation", - "core_exceptions_log_user_operation", - "core_exceptions_orderlockedexception", - "core_exceptions_orderlockedexception_init", - "core_exceptions_permissionexception", - "core_exceptions_permissionexception_init", - "core_exceptions_py", - "core_exceptions_resourceconflictexception", - "core_exceptions_resourceconflictexception_init", - "core_exceptions_resourcenotfoundexception", - "core_exceptions_resourcenotfoundexception_init", - "core_exceptions_validationexception", - "core_exceptions_validationexception_init", - "core_request_payload_py", - "core_request_payload_rationale_1", - "core_request_payload_rationale_18", - "core_request_payload_resolve_request_payload", + "core_avatar_url_extract_avatar_storage_key", + "core_avatar_url_py", + "core_avatar_url_rationale_1", + "core_avatar_url_rationale_28", + "core_avatar_url_rationale_9", + "core_avatar_url_resolve_avatar_display_url", "core_storage_basestorage", "core_storage_basestorage_delete_file", "core_storage_basestorage_get_url", @@ -3347,6 +3388,7 @@ "core_storage_process_image_content", "core_storage_py", "core_storage_qiniustorage", + "core_storage_qiniustorage_delete_file", "core_storage_qiniustorage_generate_filename", "core_storage_qiniustorage_get_url", "core_storage_qiniustorage_init", @@ -3357,10 +3399,20 @@ "core_storage_rationale_38", "core_storage_rationale_53", "core_storage_rationale_83", + "crud_qc_item_param_list_params_by_item", + "crud_qc_item_param_py", + "crud_qc_item_param_row_to_dict", + "crud_qc_item_param_save_params_for_item", + "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_py", + "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_instance", "crud_workflow_create_process_def", "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", @@ -3406,28 +3458,122 @@ "services_workflow_engine_workflowengine_start_process" ], "10": [ - "api_public_avatar_url_field", - "api_public_build_current_user_payload", - "api_public_build_user_info_payload", - "api_public_get_current_user_profile", + "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_py", + "crud_qc_sms_notification_qc_complete_time", + "crud_qc_sms_notification_qc_status_label", + "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_reception_check_result_get_check_results_for_reception", + "crud_sample_reception_check_result_legacy_results_from_reception", + "crud_sample_reception_check_result_list_results_by_reception_ids", + "crud_sample_reception_check_result_py", + "crud_sample_reception_check_result_rationale_108", + "crud_sample_reception_check_result_rationale_133", + "crud_sample_reception_check_result_rationale_171", + "crud_sample_reception_check_result_result_to_dict", + "crud_sample_reception_check_result_save_reception_check_results", + "crud_sample_reception_check_result_soft_delete_reception_check_results", + "crud_sample_reception_check_result_sync_legacy_columns_from_results", + "crud_sample_reception_create_sample_reception", + "crud_sample_reception_dec", + "crud_sample_reception_donation_ids_matching_lab_storage_keyword", + "crud_sample_reception_donation_rows_to_sample_list_items", + "crud_sample_reception_donation_sample_detail_rows_query", + "crud_sample_reception_donation_sample_id_col", + "crud_sample_reception_donation_sample_pending_query", + "crud_sample_reception_fmt_dt", + "crud_sample_reception_format_lab_storage_codes_csv", + "crud_sample_reception_get_reception_by_id", + "crud_sample_reception_get_reception_by_sample_code", + "crud_sample_reception_get_receptions_map_for_donation_samples", + "crud_sample_reception_get_receptions_map_for_samples", + "crud_sample_reception_lab_code_allocate_lab_storage_codes", + "crud_sample_reception_lab_code_allocate_one_seq", + "crud_sample_reception_lab_code_assert_lab_storage_code_available", + "crud_sample_reception_lab_code_format_lab_storage_code", + "crud_sample_reception_lab_code_max_existing_seq", + "crud_sample_reception_lab_code_parse_reception_date", + "crud_sample_reception_lab_code_py", + "crud_sample_reception_lab_code_rationale_1", + "crud_sample_reception_lab_code_reception_time_date_str", + "crud_sample_reception_lab_code_sync_lab_storage_seq_after_use", + "crud_sample_reception_lab_code_sync_sequence_from_existing", + "crud_sample_reception_lab_code_validate_and_parse_lab_storage_code", + "crud_sample_reception_lab_storage_keyword_like", + "crud_sample_reception_list_pending_protocol_samples", + "crud_sample_reception_list_received_protocol_samples", + "crud_sample_reception_normalize_date_bound", + "crud_sample_reception_protocol_ids_matching_lab_storage_keyword", + "crud_sample_reception_py", + "crud_sample_reception_reception_detail_item", + "crud_sample_reception_reception_ids_matching_lab_storage_keyword", + "crud_sample_reception_reception_sample_code", + "crud_sample_reception_reception_to_dict", + "crud_sample_reception_rows_to_sample_list_items", + "crud_sample_reception_sample_codes_matching_lab_storage_keyword", + "crud_sample_reception_sample_detail_rows_query", + "crud_sample_reception_sample_pending_query", + "crud_sample_reception_update_sample_reception", + "crud_sample_sms_notification_accept_conclusion_label", + "crud_sample_sms_notification_base_query", + "crud_sample_sms_notification_ensure_notification", + "crud_sample_sms_notification_fetch_sample_type_name", + "crud_sample_sms_notification_fmt_dt", + "crud_sample_sms_notification_generate_sms_content", + "crud_sample_sms_notification_list_notifications", + "crud_sample_sms_notification_normalize_date_bound", + "crud_sample_sms_notification_py", + "crud_sample_sms_notification_resolve_notification", + "crud_sample_sms_notification_row_to_dict", + "crud_sample_sms_notification_toggle_notification_status", + "crud_sample_sms_notification_total_pages", + "crud_sample_sms_notification_unicode_ci", + "crud_sop_document_create_sop_document", + "crud_sop_document_get_sop_document", + "crud_sop_document_list_sop_documents", + "crud_sop_document_py", + "crud_sop_document_rationale_1", + "crud_sop_document_row_to_dict", + "crud_sop_document_soft_delete_sop_document", + "crud_sop_document_sop_code_exists", + "crud_sop_document_total_pages", + "crud_sop_document_update_sop_document", + "crud_storage_entry_sms_notification_base_query", + "crud_storage_entry_sms_notification_ensure_notification", + "crud_storage_entry_sms_notification_fetch_sample_type_name", + "crud_storage_entry_sms_notification_fmt_dt", + "crud_storage_entry_sms_notification_generate_sms_content", + "crud_storage_entry_sms_notification_list_notifications", + "crud_storage_entry_sms_notification_normalize_date_bound", + "crud_storage_entry_sms_notification_py", + "crud_storage_entry_sms_notification_resolve_notification", + "crud_storage_entry_sms_notification_row_to_dict", + "crud_storage_entry_sms_notification_storage_status_label", + "crud_storage_entry_sms_notification_toggle_notification_status", + "crud_storage_entry_sms_notification_total_pages", + "crud_storage_entry_sms_notification_unicode_ci", + "crud_storage_release_review_create_review_from_reception" + ], + "11": [ "api_public_jwt_user_payload", - "api_public_logout", - "api_public_py", - "api_public_rationale_1", "api_public_rationale_112", "api_public_rationale_123", - "api_public_rationale_242", - "api_public_rationale_261", - "api_public_rationale_275", - "api_public_rationale_343", - "api_public_rationale_376", - "api_public_rationale_44", - "api_public_rationale_53", - "api_public_rationale_71", "api_public_refresh_token", - "api_public_resolve_current_user_from_request", - "api_public_update_current_user_profile", - "api_public_upload_current_user_avatar", "api_public_web_login", "api_public_web_login_rsa_public_key", "app_main_lifespan", @@ -3453,12 +3599,6 @@ "core_auth_session_key", "core_auth_store_refresh_token", "core_auth_store_session", - "core_avatar_url_extract_avatar_storage_key", - "core_avatar_url_py", - "core_avatar_url_rationale_1", - "core_avatar_url_rationale_28", - "core_avatar_url_rationale_9", - "core_avatar_url_resolve_avatar_display_url", "core_login_crypto_decrypt_login_payload", "core_login_crypto_ensure_initialized", "core_login_crypto_extract_login_credentials", @@ -3472,20 +3612,12 @@ "core_security_py", "core_security_rationale_5", "core_security_verify_password", - "core_storage_qiniustorage_delete_file", - "core_utils_generate_id", - "crud_base_camel_to_snake", "crud_base_crudbase", - "crud_base_crudbase_create", "crud_base_crudbase_delete", "crud_base_crudbase_get_all", "crud_base_crudbase_get_multi", "crud_base_crudbase_hard_delete", "crud_base_crudbase_init", - "crud_base_get_model_attr", - "crud_base_historycrud", - "crud_base_historycrud_create_history", - "crud_base_py", "crud_role_update_role_menus", "crud_user_change_password", "crud_user_create_user", @@ -3510,8 +3642,6 @@ "crud_user_user_no_exists", "crud_user_usercrudcompat", "crud_user_usercrudcompat_get_by_user_no", - "schemas_auth_profileupdaterequest", - "schemas_auth_rationale_55", "services_web_auth_roles_active_role_name_rows", "services_web_auth_roles_map_role_name_to_web", "services_web_auth_roles_py", @@ -3521,174 +3651,7 @@ "tasks_init_py", "tasks_init_shutdown_scheduler" ], - "11": [ - "crud_outbound_handover_fmt_dt", - "crud_outbound_handover_get_handover_by_schedule", - "crud_outbound_handover_get_outbound_handover", - "crud_outbound_handover_get_outbound_handover_view", - "crud_outbound_handover_handover_row_to_dict", - "crud_outbound_handover_handover_view_dict", - "crud_outbound_handover_parse_handover_time", - "crud_outbound_handover_py", - "crud_outbound_handover_rationale_103", - "crud_outbound_handover_rationale_113", - "crud_outbound_handover_rationale_147", - "crud_outbound_handover_save_outbound_handover", - "crud_outbound_release_material_cell_row_to_dict", - "crud_outbound_release_material_enrich_cell_dicts_with_live_status", - "crud_outbound_release_material_find_outbound_cell_row", - "crud_outbound_release_material_find_outbound_qc_material_row", - "crud_outbound_release_material_fmt_dt", - "crud_outbound_release_material_get_outbound_material", - "crud_outbound_release_material_get_schedule", - "crud_outbound_release_material_legacy_paper_rows_from_attachments", - "crud_outbound_release_material_material_header_to_dict", - "crud_outbound_release_material_paper_row_to_dict", - "crud_outbound_release_material_py", - "crud_outbound_release_material_qc_material_row_to_dict", - "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_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_py", - "crud_pilot_infusion_confirm_row_to_dict", - "crud_pilot_infusion_confirm_update_infusion_confirm", - "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", - "crud_pilot_infusion_schedule_mgmt_find_service_order_product", - "crud_pilot_infusion_schedule_mgmt_get_infusion_schedule_detail", - "crud_pilot_infusion_schedule_mgmt_get_plan_schedule_course_meta", - "crud_pilot_infusion_schedule_mgmt_get_products_for_schedule", - "crud_pilot_infusion_schedule_mgmt_list_infusion_schedules_mgmt", - "crud_pilot_infusion_schedule_mgmt_py", - "crud_pilot_infusion_schedule_mgmt_resolve_course_display", - "crud_pilot_infusion_schedule_mgmt_resolve_yfk_unit_price", - "crud_pilot_infusion_schedule_mgmt_row_to_dict_product", - "crud_pilot_infusion_schedule_mgmt_row_to_dict_schedule", - "crud_pilot_infusion_schedule_mgmt_schedule_product_to_txn_item", - "crud_pilot_infusion_schedule_mgmt_settlement_remark_marker", - "crud_pilot_infusion_schedule_mgmt_settlement_remark_markers_for_lookup", - "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_production_work_order_accept_conclusion_label", - "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_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_py", - "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" - ], "12": [ - "api_production_batchstockinbody", - "api_production_batchstockinitem", - "api_production_batchstockoutbody", - "api_production_batchstockoutitem", - "api_production_consumablecreatebody", - "api_production_consumablepackcreatebody", - "api_production_consumablepackupdatebody", - "api_production_consumableupdatebody", - "api_production_equipmentcreatebody", - "api_production_equipmentupdatebody", - "api_production_outputtypecreatebody", - "api_production_outputtypeupdatebody", - "api_production_packiteminput", - "api_production_processcategorycreatebody", - "api_production_processcategoryupdatebody", - "api_production_processconsumableinput", - "api_production_processcreatebody", - "api_production_processdatacollectioninput", - "api_production_processoutputinput", - "api_production_processreagentinput", - "api_production_processupdatebody", - "api_production_rationale_1", - "api_production_rationale_2419", - "api_production_reagentcreatebody", - "api_production_reagentupdatebody", - "api_production_sopdocumentcreatebody", - "api_production_sopdocumentupdatebody", - "api_production_stockinbody", - "api_production_stockoutbody", - "schemas_cell_product_cellproductbatchitem", - "schemas_cell_product_cellproductcreate", - "schemas_cell_product_cellproductlistquery", - "schemas_cell_product_cellproductupdate", - "schemas_cell_product_coerce_date_fields", - "schemas_cell_product_coerce_optional_datetime", - "schemas_cell_product_py", - "schemas_cell_product_rationale_10", - "schemas_cell_product_validate_passage", - "schemas_cell_product_validate_status", - "schemas_cell_product_validate_viability", - "schemas_process_route_processroutecreatebody", - "schemas_process_route_processrouteupdatebody", - "schemas_process_route_py", - "schemas_process_route_rationale_1", - "schemas_process_route_setcurrentbody", - "schemas_process_route_stepaddbody", - "schemas_process_route_stepconsumableupdatebody", - "schemas_process_route_stepcopybody", - "schemas_process_route_stepdatacollectionupdatebody", - "schemas_process_route_stepoutputupdatebody", - "schemas_process_route_stepreagentupdatebody", - "schemas_process_route_stepreorderbody", - "schemas_process_route_stepupdatebody", - "schemas_production_task_productiontaskassigneeupdate", - "schemas_production_task_productiontaskcreate", - "schemas_production_task_productiontaskforwardbody", - "schemas_production_task_productiontaskstatusupdate", - "schemas_production_task_productiontaskupdate", - "schemas_production_task_py", - "schemas_production_task_taskinputitem", - "schemas_production_task_taskoutputitem", - "schemas_production_task_taskstepadd", - "schemas_production_task_taskstepdatacollectionitem", - "schemas_production_task_taskstepmaterialitem", - "schemas_production_task_taskstepoutputitem", - "schemas_production_task_taskstepreorderbody", - "schemas_production_task_taskstepupdate", - "schemas_production_work_order_productionworkordercomplete", - "schemas_production_work_order_productionworkorderconfigurebody", - "schemas_production_work_order_productionworkordercreate", - "schemas_production_work_order_productionworkorderlistquery", - "schemas_production_work_order_productionworkorderupdate", - "schemas_production_work_order_py", - "schemas_qc_work_order_productionqcworkordercreatebody" - ], - "13": [ "api_production_get_next_cell_product_code", "crud_cell_product_ancestor_link_from_cell_product_input", "crud_cell_product_ancestor_sample_chain_link", @@ -3761,21 +3724,22 @@ "crud_storage_occupancy_remove_occupancy", "crud_storage_occupancy_row_to_dict" ], - "14": [ - "api_research_donation_batch_delete_research_donations", - "api_research_donation_change_donation_status", - "api_research_donation_convert_from_storage", - "api_research_donation_convert_to_storage", - "api_research_donation_create_research_donation", - "api_research_donation_delete_research_donation", - "api_research_donation_get_current_user_id", - "api_research_donation_get_research_donation_detail", - "api_research_donation_get_tenant_no", - "api_research_donation_list_research_donation_audits", - "api_research_donation_list_research_donations", - "api_research_donation_py", - "api_research_donation_rationale_1", - "api_research_donation_update_research_donation", + "13": [ + "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_create", + "crud_base_get_model_attr", + "crud_base_historycrud", + "crud_base_historycrud_create_history", + "crud_base_py", "crud_biz_no_generator_allocate_next_biz_no", "crud_biz_no_generator_format_biz_no", "crud_biz_no_generator_prefix_for", @@ -3783,9 +3747,15 @@ "crud_biz_no_generator_rationale_1", "crud_biz_no_generator_rationale_35", "crud_collection_protocol_create_collection_protocol", + "crud_protocol_donation_convert_active_link_query", "crud_protocol_donation_convert_assert_biz_no_available", + "crud_protocol_donation_convert_create_convert_link", + "crud_protocol_donation_convert_get_convert_partner", + "crud_protocol_donation_convert_get_partner_sample_codes", + "crud_protocol_donation_convert_has_active_convert_link", + "crud_protocol_donation_convert_py", + "crud_protocol_donation_convert_upsert_convert_link_for_to_storage", "crud_research_donation_audit_to_dict", - "crud_research_donation_batch_delete_donations", "crud_research_donation_collection_to_dict", "crud_research_donation_convert_to_storage", "crud_research_donation_create_collection", @@ -3812,6 +3782,7 @@ "crud_research_donation_optional_decimal", "crud_research_donation_party_to_dict", "crud_research_donation_py", + "crud_research_donation_resolve_donation_payload", "crud_research_donation_sample_to_dict", "crud_research_donation_soft_delete_all", "crud_research_donation_soft_delete_collection", @@ -3823,7 +3794,7 @@ "crud_research_donation_update_donation", "crud_research_donation_user_nick_name_map" ], - "15": [ + "14": [ "crud_cleanroom_garment_batch_create_sterilize_logs", "crud_cleanroom_garment_batch_create_wash_logs", "crud_cleanroom_garment_batch_discard_garments", @@ -3863,6 +3834,46 @@ "models_cleanroom_garment_rationale_54", "models_cleanroom_garment_rationale_9" ], + "15": [ + "crud_storage_facility_batch_create_slots", + "crud_storage_facility_clear_slots_by_facility_node", + "crud_storage_facility_collect_descendant_ids", + "crud_storage_facility_create_facility", + "crud_storage_facility_create_slot", + "crud_storage_facility_get_children", + "crud_storage_facility_get_facility", + "crud_storage_facility_get_slot", + "crud_storage_facility_insert_row_and_shift_slots", + "crud_storage_facility_is_slot_available_row", + "crud_storage_facility_list_all_facilities", + "crud_storage_facility_list_slot_select_options", + "crud_storage_facility_list_slots", + "crud_storage_facility_py", + "crud_storage_facility_rationale_1", + "crud_storage_facility_rationale_208", + "crud_storage_facility_rationale_298", + "crud_storage_facility_rationale_50", + "crud_storage_facility_rationale_77", + "crud_storage_facility_rationale_93", + "crud_storage_facility_row_to_dict", + "crud_storage_facility_slot_select_display_name", + "crud_storage_facility_slot_to_dict", + "crud_storage_facility_slot_to_dict_for_row", + "crud_storage_facility_soft_delete_facility", + "crud_storage_facility_soft_delete_slot", + "crud_storage_facility_update_facility", + "crud_storage_facility_update_slot", + "services_storage_facility_code_assert_sibling_node_code_unique", + "services_storage_facility_code_build_full_slot_code", + "services_storage_facility_code_build_node_code_path", + "services_storage_facility_code_cascade_refresh_slot_name_snapshots_for_nodes", + "services_storage_facility_code_cascade_refresh_slot_name_snapshots_for_slots", + "services_storage_facility_code_collect_slot_ids_under_nodes", + "services_storage_facility_code_load_facility_map", + "services_storage_facility_code_py", + "services_storage_facility_code_refresh_outbound_release_cell_slot_names", + "services_storage_facility_code_validate_node_code" + ], "16": [ "core_wechat_pay_get_wechat_pay_client", "core_wechat_pay_get_wechat_pay_v2", @@ -3897,6 +3908,36 @@ "core_wechat_pay_wechatpayv2client_xml_to_dict" ], "17": [ + "crud_qc_material_usage_amount_for_row", + "crud_qc_material_usage_batch_map", + "crud_qc_material_usage_deduct_for_task", + "crud_qc_material_usage_deduct_task_usage_legacy_batch", + "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_py", + "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" + ], + "18": [ "crud_clean_room_access_log_to_dict", "crud_clean_room_calc_duration_minutes", "crud_clean_room_create_access_log", @@ -3920,7 +3961,30 @@ "crud_clean_room_update_uv_disinfect_log", "crud_clean_room_uv_disinfect_log_to_dict" ], - "18": [ + "19": [ + "core_exceptions_businessexception", + "core_exceptions_businessexception_init", + "core_exceptions_invalidstatustransitionexception", + "core_exceptions_invalidstatustransitionexception_init", + "core_exceptions_log_api_request", + "core_exceptions_log_delivery_operation", + "core_exceptions_log_operation", + "core_exceptions_log_order_operation", + "core_exceptions_log_settlement_operation", + "core_exceptions_log_user_operation", + "core_exceptions_orderlockedexception", + "core_exceptions_orderlockedexception_init", + "core_exceptions_permissionexception", + "core_exceptions_permissionexception_init", + "core_exceptions_py", + "core_exceptions_resourceconflictexception", + "core_exceptions_resourceconflictexception_init", + "core_exceptions_resourcenotfoundexception", + "core_exceptions_resourcenotfoundexception_init", + "core_exceptions_validationexception", + "core_exceptions_validationexception_init" + ], + "20": [ "crud_material_code_exists", "crud_material_create_material", "crud_material_dec", @@ -3942,45 +4006,6 @@ "crud_material_update_material", "crud_material_update_material_fields" ], - "19": [ - "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_py", - "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_py", - "crud_qc_third_party_item_row_to_dict", - "crud_qc_third_party_item_soft_delete_item", - "crud_qc_third_party_item_update_item" - ], - "20": [ - "services_protocol_payment_installment_add_days_yyyymmdd", - "services_protocol_payment_installment_add_interval_months_yyyymmdd", - "services_protocol_payment_installment_add_months_yyyymmdd", - "services_protocol_payment_installment_calc_fq_installment_due_date", - "services_protocol_payment_installment_calc_installment_due_amounts_by_ratios", - "services_protocol_payment_installment_calc_installment_due_amounts_inline", - "services_protocol_payment_installment_calc_unpaid_amounts_by_ratios", - "services_protocol_payment_installment_is_legacy_installment_ratios", - "services_protocol_payment_installment_py", - "services_protocol_payment_installment_rationale_1", - "services_protocol_payment_installment_rationale_138", - "services_protocol_payment_installment_rationale_160", - "services_protocol_payment_installment_rationale_45", - "services_protocol_payment_installment_rationale_70", - "services_protocol_payment_installment_resolve_installment_due_amounts" - ], "21": [ "core_wechat_message_py", "core_wechat_message_rationale_1", @@ -3997,6 +4022,21 @@ "core_wechat_message_wechatmessageservice_send_template_message" ], "22": [ + "schemas_product_config", + "schemas_product_productbase", + "schemas_product_productcategorybase", + "schemas_product_productcategorycreate", + "schemas_product_productcategoryresponse", + "schemas_product_productcreate", + "schemas_product_productresponse", + "schemas_product_productunitbase", + "schemas_product_productunitcreate", + "schemas_product_productunitresponse", + "schemas_product_productupdate", + "schemas_product_py", + "schemas_product_rationale_1" + ], + "23": [ "crud_equipment_create_equipment", "crud_equipment_dec", "crud_equipment_equipment_code_exists", @@ -4011,7 +4051,22 @@ "crud_equipment_total_pages", "crud_equipment_update_equipment" ], - "23": [ + "24": [ + "crud_consumable_pack_create_consumable_pack", + "crud_consumable_pack_get_consumable_pack", + "crud_consumable_pack_get_pack_detail", + "crud_consumable_pack_item_row_to_dict", + "crud_consumable_pack_list_all_packs", + "crud_consumable_pack_list_consumable_packs", + "crud_consumable_pack_pack_code_exists", + "crud_consumable_pack_py", + "crud_consumable_pack_rationale_1", + "crud_consumable_pack_row_to_dict", + "crud_consumable_pack_soft_delete_consumable_pack", + "crud_consumable_pack_total_pages", + "crud_consumable_pack_update_consumable_pack" + ], + "25": [ "crud_exhibition_appointment_appointment_no_exists", "crud_exhibition_appointment_create_exhibition_appointment", "crud_exhibition_appointment_format_visit_date", @@ -4026,7 +4081,7 @@ "crud_exhibition_appointment_soft_delete_exhibition_appointment", "crud_exhibition_appointment_update_exhibition_appointment" ], - "24": [ + "26": [ "crud_reagent_stock_log_deduct_for_step", "crud_reagent_stock_log_display_remark", "crud_reagent_stock_log_list_stock_logs", @@ -4040,7 +4095,7 @@ "crud_reagent_stock_log_row_to_dict", "crud_reagent_stock_log_user_nick_name_map" ], - "25": [ + "27": [ "crud_env_detect_record_create_env_detect_record", "crud_env_detect_record_generate_record_no", "crud_env_detect_record_get_env_detect_record", @@ -4054,7 +4109,7 @@ "crud_env_detect_record_split_csv", "crud_env_detect_record_update_env_detect_record" ], - "26": [ + "28": [ "crud_consumable_stock_log_deduct_for_step", "crud_consumable_stock_log_display_remark", "crud_consumable_stock_log_list_stock_logs", @@ -4068,7 +4123,7 @@ "crud_consumable_stock_log_row_to_dict", "crud_consumable_stock_log_user_nick_name_map" ], - "27": [ + "29": [ "crud_dept_build_tree", "crud_dept_cascade_soft_delete", "crud_dept_collect_with_ancestors", @@ -4082,7 +4137,7 @@ "crud_dept_soft_delete_dept", "crud_dept_update_dept" ], - "28": [ + "30": [ "crud_menu_build_tree", "crud_menu_cascade_soft_delete", "crud_menu_create_menu", @@ -4095,20 +4150,7 @@ "crud_menu_soft_delete_menu", "crud_menu_update_menu" ], - "29": [ - "crud_customer_create_customer", - "crud_customer_get_customer", - "crud_customer_id_card_taken", - "crud_customer_list_customers", - "crud_customer_normalize_date_bound", - "crud_customer_py", - "crud_customer_rationale_1", - "crud_customer_row_to_dict", - "crud_customer_soft_delete_customer", - "crud_customer_total_pages", - "crud_customer_update_customer" - ], - "30": [ + "31": [ "crud_express_company_create_express_company", "crud_express_company_express_code_exists", "crud_express_company_get_express_company", @@ -4120,7 +4162,7 @@ "crud_express_company_total_pages", "crud_express_company_update_express_company" ], - "31": [ + "32": [ "crud_sample_reception_check_item_create_check_item", "crud_sample_reception_check_item_get_check_item", "crud_sample_reception_check_item_item_code_exists", @@ -4132,18 +4174,6 @@ "crud_sample_reception_check_item_soft_delete_check_item", "crud_sample_reception_check_item_update_check_item" ], - "32": [ - "crud_dict_data_create_dict_data", - "crud_dict_data_get_dict_data", - "crud_dict_data_list_dict_data", - "crud_dict_data_list_dict_data_options", - "crud_dict_data_py", - "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" - ], "33": [ "crud_env_detect_item_create_env_detect_item", "crud_env_detect_item_get_env_detect_item", @@ -4157,18 +4187,6 @@ "crud_env_detect_item_update_env_detect_item" ], "34": [ - "crud_item_unit_create_item_unit", - "crud_item_unit_get_item_unit", - "crud_item_unit_list_item_units", - "crud_item_unit_py", - "crud_item_unit_rationale_1", - "crud_item_unit_row_to_dict", - "crud_item_unit_soft_delete_item_unit", - "crud_item_unit_total_pages", - "crud_item_unit_unit_code_exists", - "crud_item_unit_update_item_unit" - ], - "35": [ "crud_process_category_category_code_exists", "crud_process_category_create_process_category", "crud_process_category_get_process_category", @@ -4180,19 +4198,19 @@ "crud_process_category_total_pages", "crud_process_category_update_process_category" ], - "36": [ - "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_py", - "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" + "35": [ + "crud_item_unit_create_item_unit", + "crud_item_unit_get_item_unit", + "crud_item_unit_list_item_units", + "crud_item_unit_py", + "crud_item_unit_rationale_1", + "crud_item_unit_row_to_dict", + "crud_item_unit_soft_delete_item_unit", + "crud_item_unit_total_pages", + "crud_item_unit_unit_code_exists", + "crud_item_unit_update_item_unit" ], - "37": [ + "36": [ "crud_output_type_create_output_type", "crud_output_type_get_output_type", "crud_output_type_list_output_types", @@ -4204,18 +4222,18 @@ "crud_output_type_type_code_exists", "crud_output_type_update_output_type" ], - "38": [ - "crud_post_create_post", - "crud_post_get_post", - "crud_post_list_posts", - "crud_post_post_code_exists", - "crud_post_py", - "crud_post_row_to_dict", - "crud_post_soft_delete_post", - "crud_post_total_pages", - "crud_post_update_post" + "37": [ + "core_menu_guard_py", + "core_menu_guard_rationale_1", + "core_menu_guard_rationale_15", + "core_menu_guard_rationale_51", + "core_menu_guard_rationale_57", + "core_menu_guard_require_admin_or_super_admin", + "core_menu_guard_require_any_menu_code", + "core_menu_guard_require_menu_code", + "core_menu_guard_strip_row_fields" ], - "39": [ + "38": [ "crud_tenant_create_tenant", "crud_tenant_get_tenant", "crud_tenant_list_tenants", @@ -4226,28 +4244,7 @@ "crud_tenant_total_pages", "crud_tenant_update_tenant" ], - "40": [ - "crud_site_create_site", - "crud_site_get_site", - "crud_site_list_sites", - "crud_site_py", - "crud_site_row_to_dict", - "crud_site_site_code_exists", - "crud_site_soft_delete_site", - "crud_site_total_pages", - "crud_site_update_site" - ], - "41": [ - "core_menu_guard_py", - "core_menu_guard_rationale_1", - "core_menu_guard_rationale_16", - "core_menu_guard_rationale_29", - "core_menu_guard_rationale_48", - "core_menu_guard_require_admin_or_super_admin", - "core_menu_guard_require_any_menu_code", - "core_menu_guard_require_menu_code" - ], - "42": [ + "39": [ "models_base_basemodel", "models_base_basemodel_to_dict", "models_base_get_active", @@ -4257,7 +4254,7 @@ "models_base_softdeletemodel_soft_delete", "models_base_tablename" ], - "43": [ + "40": [ "core_order_status_compat_derive_legacy_status_from_three", "core_order_status_compat_derive_three_status_from_legacy", "core_order_status_compat_py", @@ -4266,65 +4263,65 @@ "core_order_status_compat_threestatus", "core_order_status_compat_to_decimal" ], - "44": [ + "41": [ "basesettings", "core_config_config", "core_config_py", "core_config_settings" ], - "45": [ + "42": [ "core_database_auto_fill_create_dept_id", "core_database_get_db", "core_database_py", "core_database_rationale_31" ], - "46": [ + "43": [ "api_menu_get_menu_list", "api_menu_py", "api_menu_rationale_1" ], - "47": [ + "44": [ "core_context_py", "core_context_rationale_1" ], - "48": [ + "45": [ "api_init_py", "api_init_rationale_1" ], - "49": [ + "46": [ "init_py" ], - "50": [ + "47": [ "core_init_py" ], - "51": [ + "48": [ "core_wechat_message_rationale_143" ], - "52": [ + "49": [ "core_wechat_message_rationale_179" ], - "53": [ + "50": [ "core_wechat_message_rationale_215" ], - "54": [ + "51": [ "core_wechat_message_rationale_251" ], - "55": [ + "52": [ "core_wechat_message_rationale_289" ], - "56": [ + "53": [ "core_wechat_message_rationale_325" ], - "57": [ + "54": [ "models_init_py" ], - "58": [ + "55": [ "schemas_init_py" ], - "59": [ + "56": [ "crud_init_py" ], - "60": [ + "57": [ "ws_init_py" ] }, @@ -4333,49 +4330,49 @@ "1": 0.01, "2": 0.08, "3": 0.01, - "4": 0.02, - "5": 0.02, - "6": 0.08, + "4": 0.01, + "5": 0.09, + "6": 0.02, "7": 0.03, "8": 0.02, "9": 0.02, - "10": 0.03, - "11": 0.04, - "12": 0.36, + "10": 0.04, + "11": 0.05, + "12": 0.06, "13": 0.06, - "14": 0.08, - "15": 0.11, + "14": 0.11, + "15": 0.1, "16": 0.12, - "17": 0.15, - "18": 0.2, - "19": 0.18, + "17": 0.19, + "18": 0.15, + "19": 0.17, "20": 0.2, "21": 0.24, - "22": 0.31, - "23": 0.24, - "24": 0.24, - "25": 0.32, + "22": 0.23, + "23": 0.31, + "24": 0.27, + "25": 0.24, "26": 0.24, - "27": 0.27, - "28": 0.29, + "27": 0.32, + "28": 0.24, "29": 0.27, - "30": 0.31, - "31": 0.38, - "32": 0.27, + "30": 0.29, + "31": 0.31, + "32": 0.38, "33": 0.38, "34": 0.31, "35": 0.31, "36": 0.31, - "37": 0.31, + "37": 0.22, "38": 0.36, - "39": 0.36, - "40": 0.36, - "41": 0.25, - "42": 0.29, - "43": 0.38, - "44": 0.5, - "45": 0.5, - "46": 0.67, + "39": 0.29, + "40": 0.38, + "41": 0.5, + "42": 0.5, + "43": 0.67, + "44": 1.0, + "45": 1.0, + "46": 1.0, "47": 1.0, "48": 1.0, "49": 1.0, @@ -4386,10 +4383,7 @@ "54": 1.0, "55": 1.0, "56": 1.0, - "57": 1.0, - "58": 1.0, - "59": 1.0, - "60": 1.0 + "57": 1.0 }, "gods": [ { @@ -4466,6 +4460,17 @@ "relation": "calls", "why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `get_menu_list()` unexpectedly reaches hub `success_response()`" }, + { + "source": "list_my_qc_material_usages()", + "target": "strip_row_fields()", + "source_files": [ + "api/qc.py", + "core/menu_guard.py" + ], + "confidence": "INFERRED", + "relation": "calls", + "why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `strip_row_fields()` unexpectedly reaches hub `list_my_qc_material_usages()`" + }, { "source": "\u4fdd\u7559\u5339\u914d\u8282\u70b9\u53ca\u5176\u5168\u90e8\u4e0a\u7ea7\uff0c\u4f9b\u5173\u952e\u8bcd\u68c0\u7d22\u540e\u4ecd\u80fd\u6b63\u786e\u7ec4\u6811\u3002", "target": "SysDept", @@ -4487,17 +4492,6 @@ "confidence": "INFERRED", "relation": "uses", "why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `\u7269\u54c1\u5355\u4f4d CRUD\uff08biz_item_unit\uff09` unexpectedly reaches hub `BizItemUnit`" - }, - { - "source": "\u5feb\u9012\u516c\u53f8 CRUD\uff08biz_express_company\uff09", - "target": "BizExpressCompany", - "source_files": [ - "crud/express_company.py", - "models/models.py" - ], - "confidence": "INFERRED", - "relation": "uses", - "why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `\u5feb\u9012\u516c\u53f8 CRUD\uff08biz_express_company\uff09` unexpectedly reaches hub `BizExpressCompany`" } ] } \ No newline at end of file diff --git a/backend/graphify-out/.graphify_extract.json b/backend/graphify-out/.graphify_extract.json index abd3673e..f2e521e0 100644 --- a/backend/graphify-out/.graphify_extract.json +++ b/backend/graphify-out/.graphify_extract.json @@ -922,28 +922,42 @@ "label": "require_admin_or_super_admin()", "file_type": "code", "source_file": "core/menu_guard.py", - "source_location": "L15" + "source_location": "L14" }, { "id": "core_menu_guard_get_user_menu_codes", "label": "get_user_menu_codes()", "file_type": "code", "source_file": "core/menu_guard.py", - "source_location": "L23" + "source_location": "L22" + }, + { + "id": "core_menu_guard_user_has_menu_perm", + "label": "user_has_menu_perm()", + "file_type": "code", + "source_file": "core/menu_guard.py", + "source_location": "L27" + }, + { + "id": "core_menu_guard_strip_row_fields", + "label": "strip_row_fields()", + "file_type": "code", + "source_file": "core/menu_guard.py", + "source_location": "L40" }, { "id": "core_menu_guard_require_menu_code", "label": "require_menu_code()", "file_type": "code", "source_file": "core/menu_guard.py", - "source_location": "L28" + "source_location": "L50" }, { "id": "core_menu_guard_require_any_menu_code", "label": "require_any_menu_code()", "file_type": "code", "source_file": "core/menu_guard.py", - "source_location": "L47" + "source_location": "L56" }, { "id": "core_menu_guard_rationale_1", @@ -953,32 +967,39 @@ "source_location": "L1" }, { - "id": "core_menu_guard_rationale_16", + "id": "core_menu_guard_rationale_15", "label": "\u8fd0\u8425\u7aef\u89d2\u8272\u5b88\u536b\uff1aadmin / super_admin \u53ef\u8bbf\u95ee\u3002", "file_type": "rationale", "source_file": "core/menu_guard.py", - "source_location": "L16" + "source_location": "L15" }, { - "id": "core_menu_guard_rationale_24", + "id": "core_menu_guard_rationale_23", "label": "\u8bfb\u53d6\u7528\u6237\u6388\u6743\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\u96c6\u5408\uff08\u4e0e\u524d\u7aef meta.menuCode / perms \u5bf9\u9f50\uff09\u3002", "file_type": "rationale", "source_file": "core/menu_guard.py", - "source_location": "L24" + "source_location": "L23" }, { - "id": "core_menu_guard_rationale_29", - "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\u3002super_admin \u76f4\u63a5\u653e\u884c\u3002", + "id": "core_menu_guard_rationale_28", + "label": "\u5224\u65ad\u7528\u6237\u662f\u5426\u62e5\u6709\u6307\u5b9a\u6743\u9650\u7801\uff08\u4e0d\u62e6\u622a\u8bf7\u6c42\uff0c\u7528\u4e8e\u5b57\u6bb5/\u6309\u94ae\u7ea7\u80fd\u529b\u63a7\u5236\uff09\u3002", "file_type": "rationale", "source_file": "core/menu_guard.py", - "source_location": "L29" + "source_location": "L28" }, { - "id": "core_menu_guard_rationale_48", - "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff1a\u62e5\u6709\u4efb\u4e00 menuCode \u5373\u53ef\u8bbf\u95ee\u3002super_admin \u76f4\u63a5\u653e\u884c\u3002", + "id": "core_menu_guard_rationale_51", + "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff08\u5df2\u7edf\u4e00\u653e\u884c menuCode \u6821\u9a8c\uff0c\u4ec5\u4fdd\u7559\u8fd0\u8425\u7aef\u767b\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "core/menu_guard.py", - "source_location": "L48" + "source_location": "L51" + }, + { + "id": "core_menu_guard_rationale_57", + "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\uff08\u5df2\u7edf\u4e00\u653e\u884c menuCode \u6821\u9a8c\uff0c\u4ec5\u4fdd\u7559\u8fd0\u8425\u7aef\u767b\u5f55\uff09\u3002", + "file_type": "rationale", + "source_file": "core/menu_guard.py", + "source_location": "L57" }, { "id": "core_db_collation_py", @@ -22538,7 +22559,7 @@ "label": "ThirdPartyCompanyBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L44" + "source_location": "L48" }, { "id": "basemodel", @@ -22552,609 +22573,609 @@ "label": "ThirdPartyCompanyUpdateBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L62" + "source_location": "L66" }, { "id": "api_qc_list_qc_third_party_companies", "label": "list_qc_third_party_companies()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L81" + "source_location": "L85" }, { "id": "api_qc_list_qc_third_party_company_options", "label": "list_qc_third_party_company_options()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L103" + "source_location": "L107" }, { "id": "api_qc_create_qc_third_party_company", "label": "create_qc_third_party_company()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L117" + "source_location": "L121" }, { "id": "api_qc_update_qc_third_party_company", "label": "update_qc_third_party_company()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L152" + "source_location": "L156" }, { "id": "api_qc_delete_qc_third_party_company", "label": "delete_qc_third_party_company()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L189" + "source_location": "L193" }, { "id": "api_qc_thirdpartyitembody", "label": "ThirdPartyItemBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L209" + "source_location": "L213" }, { "id": "api_qc_thirdpartyitemupdatebody", "label": "ThirdPartyItemUpdateBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L221" + "source_location": "L225" }, { "id": "api_qc_list_qc_third_party_items", "label": "list_qc_third_party_items()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L234" + "source_location": "L238" }, { "id": "api_qc_list_qc_third_party_items_active", "label": "list_qc_third_party_items_active()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L263" + "source_location": "L267" }, { "id": "api_qc_create_qc_third_party_item", "label": "create_qc_third_party_item()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L278" + "source_location": "L282" }, { "id": "api_qc_update_qc_third_party_item", "label": "update_qc_third_party_item()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L307" + "source_location": "L311" }, { "id": "api_qc_delete_qc_third_party_item", "label": "delete_qc_third_party_item()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L338" + "source_location": "L342" }, { "id": "api_qc_labtestitembody", "label": "LabTestItemBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L358" + "source_location": "L362" }, { "id": "api_qc_labtestitemupdatebody", "label": "LabTestItemUpdateBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L369" + "source_location": "L373" }, { "id": "api_qc_itemparambody", "label": "ItemParamBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L383" + "source_location": "L387" }, { "id": "api_qc_taskresultbody", "label": "TaskResultBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L388" + "source_location": "L392" }, { "id": "api_qc_taskcompletewithresultbody", "label": "TaskCompleteWithResultBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L393" + "source_location": "L397" }, { "id": "api_qc_list_qc_lab_test_items", "label": "list_qc_lab_test_items()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L403" + "source_location": "L407" }, { "id": "api_qc_list_qc_lab_test_items_active", "label": "list_qc_lab_test_items_active()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L425" + "source_location": "L429" }, { "id": "api_qc_create_qc_lab_test_item", "label": "create_qc_lab_test_item()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L439" + "source_location": "L443" }, { "id": "api_qc_update_qc_lab_test_item", "label": "update_qc_lab_test_item()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L467" + "source_location": "L471" }, { "id": "api_qc_delete_qc_lab_test_item", "label": "delete_qc_lab_test_item()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L497" + "source_location": "L501" }, { "id": "api_qc_list_item_params", "label": "list_item_params()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L518" + "source_location": "L522" }, { "id": "api_qc_save_item_params", "label": "save_item_params()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L534" + "source_location": "L538" }, { "id": "api_qc_workorderconfigurebody", "label": "WorkOrderConfigureBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L556" + "source_location": "L560" }, { "id": "api_qc_assert_task_write_access", "label": "_assert_task_write_access()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L569" + "source_location": "L573" }, { "id": "api_qc_create_qc_work_order", "label": "create_qc_work_order()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L589" + "source_location": "L593" }, { "id": "api_qc_list_qc_work_orders", "label": "list_qc_work_orders()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L628" + "source_location": "L632" }, { "id": "api_qc_get_qc_work_order_detail", "label": "get_qc_work_order_detail()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L671" + "source_location": "L675" }, { "id": "api_qc_get_outbound_qc_detail", "label": "get_outbound_qc_detail()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L689" + "source_location": "L693" }, { "id": "api_qc_update_qc_work_order", "label": "update_qc_work_order()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L707" + "source_location": "L711" }, { "id": "api_qc_delete_qc_work_order_api", "label": "delete_qc_work_order_api()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L737" + "source_location": "L741" }, { "id": "api_qc_configure_qc_work_order", "label": "configure_qc_work_order()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L751" + "source_location": "L755" }, { "id": "api_qc_taskattachmentsbody", "label": "TaskAttachmentsBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L784" + "source_location": "L788" }, { "id": "api_qc_create_qc_task", "label": "create_qc_task()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L791" + "source_location": "L795" }, { "id": "api_qc_list_my_qc_tasks", "label": "list_my_qc_tasks()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L823" + "source_location": "L827" }, { "id": "api_qc_list_qc_tasks", "label": "list_qc_tasks()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L858" + "source_location": "L862" }, { "id": "api_qc_get_qc_task_detail", "label": "get_qc_task_detail()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L891" + "source_location": "L895" }, { "id": "api_qc_start_qc_task", "label": "start_qc_task()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L909" + "source_location": "L913" }, { "id": "api_qc_complete_qc_task", "label": "complete_qc_task()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L929" + "source_location": "L933" }, { "id": "api_qc_get_task_results", "label": "get_task_results()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L949" + "source_location": "L953" }, { "id": "api_qc_list_qc_material_requisition_options", "label": "list_qc_material_requisition_options()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L964" + "source_location": "L968" }, { "id": "api_qc_get_task_material_usages", "label": "get_task_material_usages()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L987" + "source_location": "L991" }, { "id": "api_qc_complete_task_with_result", "label": "complete_task_with_result()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1007" + "source_location": "L1011" }, { "id": "api_qc_update_qc_task_attachments", "label": "update_qc_task_attachments()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1069" + "source_location": "L1073" }, { "id": "api_qc_delete_qc_task_api", "label": "delete_qc_task_api()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1096" + "source_location": "L1100" }, { "id": "api_qc_qcmaterialbody", "label": "QcMaterialBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1112" + "source_location": "L1116" }, { "id": "api_qc_qcmaterialupdatebody", "label": "QcMaterialUpdateBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1123" + "source_location": "L1127" }, { "id": "api_qc_stockinbody", "label": "StockInBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1134" + "source_location": "L1138" }, { "id": "api_qc_batchstockinitem", "label": "BatchStockInItem", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1149" + "source_location": "L1153" }, { "id": "api_qc_batchstockinbody", "label": "BatchStockInBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1164" + "source_location": "L1168" }, { "id": "api_qc_batchstockoutitem", "label": "BatchStockOutItem", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1171" + "source_location": "L1175" }, { "id": "api_qc_batchstockoutbody", "label": "BatchStockOutBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1178" + "source_location": "L1182" }, { "id": "api_qc_batchdiscarditem", "label": "BatchDiscardItem", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1187" + "source_location": "L1191" }, { "id": "api_qc_batchdiscardbody", "label": "BatchDiscardBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1195" + "source_location": "L1199" }, { "id": "api_qc_qcmaterialbatchupdatebody", "label": "QcMaterialBatchUpdateBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1203" + "source_location": "L1207" }, { "id": "api_qc_list_qc_material_batches", "label": "list_qc_material_batches()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1224" + "source_location": "L1228" }, { "id": "api_qc_qc_material_batch_options", "label": "qc_material_batch_options()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1253" + "source_location": "L1257" }, { "id": "api_qc_update_qc_material_batch", "label": "update_qc_material_batch()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1276" + "source_location": "L1280" }, { "id": "api_qc_delete_qc_material_batch", "label": "delete_qc_material_batch()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1305" + "source_location": "L1309" }, { "id": "api_qc_list_qc_materials", "label": "list_qc_materials()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1322" + "source_location": "L1326" }, { "id": "api_qc_qc_material_options", "label": "qc_material_options()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1344" + "source_location": "L1348" }, { "id": "api_qc_create_qc_material", "label": "create_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1356" + "source_location": "L1360" }, { "id": "api_qc_update_qc_material", "label": "update_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1386" + "source_location": "L1390" }, { "id": "api_qc_delete_qc_material", "label": "delete_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1415" + "source_location": "L1419" }, { "id": "api_qc_batch_stock_in_qc_material", "label": "batch_stock_in_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1432" + "source_location": "L1436" }, { "id": "api_qc_batch_stock_out_qc_material", "label": "batch_stock_out_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1485" + "source_location": "L1489" }, { "id": "api_qc_batch_discard_qc_material", "label": "batch_discard_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1521" + "source_location": "L1525" }, { "id": "api_qc_stock_in_qc_material", "label": "stock_in_qc_material()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1563" + "source_location": "L1567" }, { "id": "api_qc_batch_stock_in_qc_material_batches", "label": "batch_stock_in_qc_material_batches()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1605" + "source_location": "L1609" }, { "id": "api_qc_batch_stock_out_qc_material_batches", "label": "batch_stock_out_qc_material_batches()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1615" + "source_location": "L1619" }, { "id": "api_qc_batch_discard_qc_material_batches", "label": "batch_discard_qc_material_batches()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1625" + "source_location": "L1629" }, { "id": "api_qc_list_qc_material_usages", "label": "list_qc_material_usages()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1638" + "source_location": "L1642" }, { "id": "api_qc_list_my_qc_material_usages", "label": "list_my_qc_material_usages()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1667" + "source_location": "L1671" }, { "id": "api_qc_list_qc_material_linked_task_usages", "label": "list_qc_material_linked_task_usages()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1704" + "source_location": "L1710" }, { "id": "api_qc_list_qc_material_stock_check_requisitions", "label": "list_qc_material_stock_check_requisitions()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1729" + "source_location": "L1735" }, { "id": "api_qc_mark_qc_material_usage_fully_used", "label": "mark_qc_material_usage_fully_used()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1755" + "source_location": "L1761" }, { "id": "api_qc_stockcheckcreatebody", "label": "StockCheckCreateBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1785" + "source_location": "L1791" }, { "id": "api_qc_stockcheckunusedlineitem", "label": "StockCheckUnusedLineItem", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1792" + "source_location": "L1798" }, { "id": "api_qc_stockcheckunusedlinesbody", "label": "StockCheckUnusedLinesBody", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1812" + "source_location": "L1818" }, { "id": "api_qc_list_qc_material_stock_checks", "label": "list_qc_material_stock_checks()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1818" + "source_location": "L1824" }, { "id": "api_qc_create_qc_material_stock_check", "label": "create_qc_material_stock_check()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1849" + "source_location": "L1855" }, { "id": "api_qc_get_qc_material_stock_check", "label": "get_qc_material_stock_check()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1875" + "source_location": "L1881" }, { "id": "api_qc_save_qc_material_stock_check_unused_lines", "label": "save_qc_material_stock_check_unused_lines()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1891" + "source_location": "L1897" }, { "id": "api_qc_complete_qc_material_stock_check", "label": "complete_qc_material_stock_check()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1917" + "source_location": "L1923" }, { "id": "api_qc_cancel_qc_material_stock_check", "label": "cancel_qc_material_stock_check()", "file_type": "code", "source_file": "api/qc.py", - "source_location": "L1934" + "source_location": "L1940" }, { "id": "api_qc_rationale_1", @@ -23164,46 +23185,46 @@ "source_location": "L1" }, { - "id": "api_qc_rationale_1610", + "id": "api_qc_rationale_1614", "label": "\u6279\u91cf\u5165\u5e93\uff08\u4e0e /qc-materials/batch-stock-in \u7b49\u4ef7\uff09\u3002", "file_type": "rationale", "source_file": "api/qc.py", - "source_location": "L1610" + "source_location": "L1614" }, { - "id": "api_qc_rationale_1620", + "id": "api_qc_rationale_1624", "label": "\u6279\u91cf\u51fa\u5e93\uff08\u4e0e /qc-materials/batch-stock-out \u7b49\u4ef7\uff09\u3002", "file_type": "rationale", "source_file": "api/qc.py", - "source_location": "L1620" + "source_location": "L1624" }, { - "id": "api_qc_rationale_1630", + "id": "api_qc_rationale_1634", "label": "\u6279\u91cf\u5e9f\u5f03\uff08\u4e0e /qc-materials/batch-discard \u7b49\u4ef7\uff09\u3002", "file_type": "rationale", "source_file": "api/qc.py", - "source_location": "L1630" + "source_location": "L1634" }, { - "id": "api_qc_rationale_1679", + "id": "api_qc_rationale_1683", "label": "\u5f53\u524d\u767b\u5f55\u4eba\u7684\u7269\u6599\u9886\u7528\u8bb0\u5f55\uff08\u624b\u52a8\u51fa\u5e93\u9886\u7528\u4eba / \u4efb\u52a1\u4f7f\u7528\u586b\u62a5\u4eba\uff09\u3002", "file_type": "rationale", "source_file": "api/qc.py", - "source_location": "L1679" + "source_location": "L1683" }, { - "id": "api_qc_rationale_1736", + "id": "api_qc_rationale_1742", "label": "\u76d8\u70b9\u767b\u8bb0\uff1a\u5f85\u5904\u7406\u9886\u7528\u8bb0\u5f55\uff08\u672a\u6807\u8bb0\u5df2\u4f7f\u7528\u5b8c\uff09\u3002", "file_type": "rationale", "source_file": "api/qc.py", - "source_location": "L1736" + "source_location": "L1742" }, { - "id": "api_qc_rationale_1762", + "id": "api_qc_rationale_1768", "label": "\u6807\u8bb0\u9886\u7528\u8bb0\u5f55\u5df2\u4f7f\u7528\u5b8c\uff08\u76d8\u70b9\u767b\u8bb0 / \u53d8\u52a8\u8bb0\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "api/qc.py", - "source_location": "L1762" + "source_location": "L1768" }, { "id": "api_market_py", @@ -29773,7 +29794,7 @@ }, { "id": "services_web_auth_roles_rationale_70", - "label": "\u7528\u6237\u901a\u8fc7\u89d2\u8272\u5173\u8054\u5f97\u5230\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\uff08sys_menu.perms\uff0c\u7a7a\u5219\u9000\u56de\u83dc\u5355 id\uff09\u3002 \u6ce8\uff1a\u4e00\u7ea7\u83dc\u5355\uff08market\u3001production\u3001quali", + "label": "\u7528\u6237\u901a\u8fc7\u89d2\u8272\u5173\u8054\u5f97\u5230\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\uff08sys_menu.perms\uff0c\u7a7a\u5219\u9000\u56de\u83dc\u5355 id\uff09\u3002 \u6ce8\uff1a\u4e0d\u8fc7\u6ee4 visible\u2014\u2014F \u7c7b\u578b\u6309\u94ae\u7b49 visible", "file_type": "rationale", "source_file": "services/web_auth_roles.py", "source_location": "L70" @@ -32386,29 +32407,20 @@ }, { "source": "core_menu_guard_py", - "target": "app_core_database", + "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", "source_location": "L8", "weight": 1.0 }, - { - "source": "core_menu_guard_py", - "target": "app_services_web_auth_roles", - "relation": "imports_from", - "confidence": "EXTRACTED", - "source_file": "core/menu_guard.py", - "source_location": "L9", - "weight": 1.0 - }, { "source": "core_menu_guard_py", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L15", + "source_location": "L14", "weight": 1.0 }, { @@ -32417,7 +32429,25 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L23", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "core_menu_guard_py", + "target": "core_menu_guard_user_has_menu_perm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "core/menu_guard.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "core_menu_guard_py", + "target": "core_menu_guard_strip_row_fields", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "core/menu_guard.py", + "source_location": "L40", "weight": 1.0 }, { @@ -32426,7 +32456,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L28", + "source_location": "L50", "weight": 1.0 }, { @@ -32435,7 +32465,16 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L47", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "core_menu_guard_user_has_menu_perm", + "target": "core_menu_guard_get_user_menu_codes", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "core/menu_guard.py", + "source_location": "L37", "weight": 1.0 }, { @@ -32448,39 +32487,48 @@ "weight": 1.0 }, { - "source": "core_menu_guard_rationale_16", + "source": "core_menu_guard_rationale_15", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L16", + "source_location": "L15", "weight": 1.0 }, { - "source": "core_menu_guard_rationale_24", + "source": "core_menu_guard_rationale_23", "target": "core_menu_guard_get_user_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L24", + "source_location": "L23", "weight": 1.0 }, { - "source": "core_menu_guard_rationale_29", + "source": "core_menu_guard_rationale_28", + "target": "core_menu_guard_user_has_menu_perm", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "core/menu_guard.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "core_menu_guard_rationale_51", "target": "core_menu_guard_require_menu_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L29", + "source_location": "L51", "weight": 1.0 }, { - "source": "core_menu_guard_rationale_48", + "source": "core_menu_guard_rationale_57", "target": "core_menu_guard_require_any_menu_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "core/menu_guard.py", - "source_location": "L48", + "source_location": "L57", "weight": 1.0 }, { @@ -88532,48 +88580,12 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L19", - "weight": 1.0 - }, - { - "source": "api_qc_py", - "target": "app_core_utils", - "relation": "imports_from", - "confidence": "EXTRACTED", - "source_file": "api/qc.py", - "source_location": "L20", - "weight": 1.0 - }, - { - "source": "api_qc_py", - "target": "app_crud", - "relation": "imports_from", - "confidence": "EXTRACTED", - "source_file": "api/qc.py", - "source_location": "L21", - "weight": 1.0 - }, - { - "source": "api_qc_py", - "target": "app_crud", - "relation": "imports_from", - "confidence": "EXTRACTED", - "source_file": "api/qc.py", - "source_location": "L22", - "weight": 1.0 - }, - { - "source": "api_qc_py", - "target": "app_crud", - "relation": "imports_from", - "confidence": "EXTRACTED", - "source_file": "api/qc.py", "source_location": "L23", "weight": 1.0 }, { "source": "api_qc_py", - "target": "app_crud", + "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/qc.py", @@ -88645,7 +88657,7 @@ }, { "source": "api_qc_py", - "target": "app_crud_collection_protocol", + "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/qc.py", @@ -88654,7 +88666,7 @@ }, { "source": "api_qc_py", - "target": "app_api_sample_reception", + "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/qc.py", @@ -88663,7 +88675,7 @@ }, { "source": "api_qc_py", - "target": "app_schemas_qc_work_order", + "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/qc.py", @@ -88672,20 +88684,56 @@ }, { "source": "api_qc_py", - "target": "app_schemas_qc_task", + "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/qc.py", "source_location": "L35", "weight": 1.0 }, + { + "source": "api_qc_py", + "target": "app_crud_collection_protocol", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/qc.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "api_qc_py", + "target": "app_api_sample_reception", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/qc.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "api_qc_py", + "target": "app_schemas_qc_work_order", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/qc.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "api_qc_py", + "target": "app_schemas_qc_task", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/qc.py", + "source_location": "L39", + "weight": 1.0 + }, { "source": "api_qc_py", "target": "api_qc_thirdpartycompanybody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L44", + "source_location": "L48", "weight": 1.0 }, { @@ -88694,7 +88742,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L44", + "source_location": "L48", "weight": 1.0 }, { @@ -88703,7 +88751,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L62", + "source_location": "L66", "weight": 1.0 }, { @@ -88712,7 +88760,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L62", + "source_location": "L66", "weight": 1.0 }, { @@ -88721,7 +88769,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L81", + "source_location": "L85", "weight": 1.0 }, { @@ -88730,7 +88778,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L103", + "source_location": "L107", "weight": 1.0 }, { @@ -88739,7 +88787,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L117", + "source_location": "L121", "weight": 1.0 }, { @@ -88748,7 +88796,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L152", + "source_location": "L156", "weight": 1.0 }, { @@ -88757,7 +88805,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L189", + "source_location": "L193", "weight": 1.0 }, { @@ -88766,7 +88814,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L209", + "source_location": "L213", "weight": 1.0 }, { @@ -88775,7 +88823,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L209", + "source_location": "L213", "weight": 1.0 }, { @@ -88784,7 +88832,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L221", + "source_location": "L225", "weight": 1.0 }, { @@ -88793,7 +88841,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L221", + "source_location": "L225", "weight": 1.0 }, { @@ -88802,7 +88850,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L234", + "source_location": "L238", "weight": 1.0 }, { @@ -88811,7 +88859,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L263", + "source_location": "L267", "weight": 1.0 }, { @@ -88820,7 +88868,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L278", + "source_location": "L282", "weight": 1.0 }, { @@ -88829,7 +88877,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L307", + "source_location": "L311", "weight": 1.0 }, { @@ -88838,7 +88886,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L338", + "source_location": "L342", "weight": 1.0 }, { @@ -88847,7 +88895,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L358", + "source_location": "L362", "weight": 1.0 }, { @@ -88856,7 +88904,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L358", + "source_location": "L362", "weight": 1.0 }, { @@ -88865,7 +88913,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L369", + "source_location": "L373", "weight": 1.0 }, { @@ -88874,7 +88922,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L369", + "source_location": "L373", "weight": 1.0 }, { @@ -88883,7 +88931,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L383", + "source_location": "L387", "weight": 1.0 }, { @@ -88892,7 +88940,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L383", + "source_location": "L387", "weight": 1.0 }, { @@ -88901,7 +88949,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L388", + "source_location": "L392", "weight": 1.0 }, { @@ -88910,7 +88958,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L388", + "source_location": "L392", "weight": 1.0 }, { @@ -88919,7 +88967,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L393", + "source_location": "L397", "weight": 1.0 }, { @@ -88928,7 +88976,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L393", + "source_location": "L397", "weight": 1.0 }, { @@ -88937,7 +88985,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L403", + "source_location": "L407", "weight": 1.0 }, { @@ -88946,7 +88994,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L425", + "source_location": "L429", "weight": 1.0 }, { @@ -88955,7 +89003,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L439", + "source_location": "L443", "weight": 1.0 }, { @@ -88964,7 +89012,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L467", + "source_location": "L471", "weight": 1.0 }, { @@ -88973,7 +89021,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L497", + "source_location": "L501", "weight": 1.0 }, { @@ -88982,7 +89030,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L518", + "source_location": "L522", "weight": 1.0 }, { @@ -88991,7 +89039,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L534", + "source_location": "L538", "weight": 1.0 }, { @@ -89000,7 +89048,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L556", + "source_location": "L560", "weight": 1.0 }, { @@ -89009,7 +89057,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L556", + "source_location": "L560", "weight": 1.0 }, { @@ -89018,7 +89066,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L569", + "source_location": "L573", "weight": 1.0 }, { @@ -89027,7 +89075,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L589", + "source_location": "L593", "weight": 1.0 }, { @@ -89036,7 +89084,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L628", + "source_location": "L632", "weight": 1.0 }, { @@ -89045,7 +89093,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L671", + "source_location": "L675", "weight": 1.0 }, { @@ -89054,7 +89102,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L689", + "source_location": "L693", "weight": 1.0 }, { @@ -89063,7 +89111,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L707", + "source_location": "L711", "weight": 1.0 }, { @@ -89072,7 +89120,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L737", + "source_location": "L741", "weight": 1.0 }, { @@ -89081,7 +89129,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L751", + "source_location": "L755", "weight": 1.0 }, { @@ -89090,7 +89138,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L784", + "source_location": "L788", "weight": 1.0 }, { @@ -89099,7 +89147,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L784", + "source_location": "L788", "weight": 1.0 }, { @@ -89108,7 +89156,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L791", + "source_location": "L795", "weight": 1.0 }, { @@ -89117,7 +89165,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L823", + "source_location": "L827", "weight": 1.0 }, { @@ -89126,7 +89174,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L858", + "source_location": "L862", "weight": 1.0 }, { @@ -89135,7 +89183,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L891", + "source_location": "L895", "weight": 1.0 }, { @@ -89144,7 +89192,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L909", + "source_location": "L913", "weight": 1.0 }, { @@ -89153,7 +89201,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L929", + "source_location": "L933", "weight": 1.0 }, { @@ -89162,7 +89210,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L949", + "source_location": "L953", "weight": 1.0 }, { @@ -89171,7 +89219,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L964", + "source_location": "L968", "weight": 1.0 }, { @@ -89180,7 +89228,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L987", + "source_location": "L991", "weight": 1.0 }, { @@ -89189,7 +89237,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1007", + "source_location": "L1011", "weight": 1.0 }, { @@ -89198,7 +89246,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1069", + "source_location": "L1073", "weight": 1.0 }, { @@ -89207,7 +89255,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1096", + "source_location": "L1100", "weight": 1.0 }, { @@ -89216,7 +89264,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1112", + "source_location": "L1116", "weight": 1.0 }, { @@ -89225,7 +89273,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1112", + "source_location": "L1116", "weight": 1.0 }, { @@ -89234,7 +89282,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1123", + "source_location": "L1127", "weight": 1.0 }, { @@ -89243,7 +89291,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1123", + "source_location": "L1127", "weight": 1.0 }, { @@ -89252,7 +89300,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1134", + "source_location": "L1138", "weight": 1.0 }, { @@ -89261,7 +89309,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1134", + "source_location": "L1138", "weight": 1.0 }, { @@ -89270,7 +89318,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1149", + "source_location": "L1153", "weight": 1.0 }, { @@ -89279,7 +89327,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1149", + "source_location": "L1153", "weight": 1.0 }, { @@ -89288,7 +89336,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1164", + "source_location": "L1168", "weight": 1.0 }, { @@ -89297,7 +89345,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1164", + "source_location": "L1168", "weight": 1.0 }, { @@ -89306,7 +89354,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1171", + "source_location": "L1175", "weight": 1.0 }, { @@ -89315,7 +89363,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1171", + "source_location": "L1175", "weight": 1.0 }, { @@ -89324,7 +89372,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1178", + "source_location": "L1182", "weight": 1.0 }, { @@ -89333,7 +89381,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1178", + "source_location": "L1182", "weight": 1.0 }, { @@ -89342,7 +89390,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1187", + "source_location": "L1191", "weight": 1.0 }, { @@ -89351,7 +89399,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1187", + "source_location": "L1191", "weight": 1.0 }, { @@ -89360,7 +89408,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1195", + "source_location": "L1199", "weight": 1.0 }, { @@ -89369,7 +89417,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1195", + "source_location": "L1199", "weight": 1.0 }, { @@ -89378,7 +89426,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1203", + "source_location": "L1207", "weight": 1.0 }, { @@ -89387,7 +89435,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1203", + "source_location": "L1207", "weight": 1.0 }, { @@ -89396,7 +89444,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1224", + "source_location": "L1228", "weight": 1.0 }, { @@ -89405,7 +89453,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1253", + "source_location": "L1257", "weight": 1.0 }, { @@ -89414,7 +89462,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1276", + "source_location": "L1280", "weight": 1.0 }, { @@ -89423,7 +89471,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1305", + "source_location": "L1309", "weight": 1.0 }, { @@ -89432,7 +89480,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1322", + "source_location": "L1326", "weight": 1.0 }, { @@ -89441,7 +89489,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1344", + "source_location": "L1348", "weight": 1.0 }, { @@ -89450,7 +89498,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1356", + "source_location": "L1360", "weight": 1.0 }, { @@ -89459,7 +89507,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1386", + "source_location": "L1390", "weight": 1.0 }, { @@ -89468,7 +89516,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1415", + "source_location": "L1419", "weight": 1.0 }, { @@ -89477,7 +89525,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1432", + "source_location": "L1436", "weight": 1.0 }, { @@ -89486,7 +89534,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1485", + "source_location": "L1489", "weight": 1.0 }, { @@ -89495,7 +89543,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1521", + "source_location": "L1525", "weight": 1.0 }, { @@ -89504,7 +89552,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1563", + "source_location": "L1567", "weight": 1.0 }, { @@ -89513,7 +89561,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1605", + "source_location": "L1609", "weight": 1.0 }, { @@ -89522,7 +89570,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1615", + "source_location": "L1619", "weight": 1.0 }, { @@ -89531,7 +89579,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1625", + "source_location": "L1629", "weight": 1.0 }, { @@ -89540,7 +89588,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1638", + "source_location": "L1642", "weight": 1.0 }, { @@ -89549,7 +89597,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1667", + "source_location": "L1671", "weight": 1.0 }, { @@ -89558,7 +89606,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1704", + "source_location": "L1710", "weight": 1.0 }, { @@ -89567,7 +89615,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1729", + "source_location": "L1735", "weight": 1.0 }, { @@ -89576,7 +89624,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1755", + "source_location": "L1761", "weight": 1.0 }, { @@ -89585,7 +89633,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1785", + "source_location": "L1791", "weight": 1.0 }, { @@ -89594,7 +89642,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1785", + "source_location": "L1791", "weight": 1.0 }, { @@ -89603,7 +89651,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1792", + "source_location": "L1798", "weight": 1.0 }, { @@ -89612,7 +89660,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1792", + "source_location": "L1798", "weight": 1.0 }, { @@ -89621,7 +89669,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1812", + "source_location": "L1818", "weight": 1.0 }, { @@ -89630,7 +89678,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1812", + "source_location": "L1818", "weight": 1.0 }, { @@ -89639,7 +89687,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1818", + "source_location": "L1824", "weight": 1.0 }, { @@ -89648,7 +89696,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1849", + "source_location": "L1855", "weight": 1.0 }, { @@ -89657,7 +89705,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1875", + "source_location": "L1881", "weight": 1.0 }, { @@ -89666,7 +89714,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1891", + "source_location": "L1897", "weight": 1.0 }, { @@ -89675,7 +89723,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1917", + "source_location": "L1923", "weight": 1.0 }, { @@ -89684,7 +89732,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1934", + "source_location": "L1940", "weight": 1.0 }, { @@ -89693,7 +89741,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L917", + "source_location": "L921", "weight": 1.0 }, { @@ -89702,7 +89750,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1020", + "source_location": "L1024", "weight": 1.0 }, { @@ -89711,7 +89759,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1078", + "source_location": "L1082", "weight": 1.0 }, { @@ -89720,7 +89768,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1611", + "source_location": "L1615", "weight": 1.0 }, { @@ -89729,7 +89777,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1621", + "source_location": "L1625", "weight": 1.0 }, { @@ -89738,7 +89786,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1631", + "source_location": "L1635", "weight": 1.0 }, { @@ -89751,57 +89799,57 @@ "weight": 1.0 }, { - "source": "api_qc_rationale_1610", + "source": "api_qc_rationale_1614", "target": "api_qc_batch_stock_in_qc_material_batches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1610", + "source_location": "L1614", "weight": 1.0 }, { - "source": "api_qc_rationale_1620", + "source": "api_qc_rationale_1624", "target": "api_qc_batch_stock_out_qc_material_batches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1620", + "source_location": "L1624", "weight": 1.0 }, { - "source": "api_qc_rationale_1630", + "source": "api_qc_rationale_1634", "target": "api_qc_batch_discard_qc_material_batches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1630", + "source_location": "L1634", "weight": 1.0 }, { - "source": "api_qc_rationale_1679", + "source": "api_qc_rationale_1683", "target": "api_qc_list_my_qc_material_usages", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1679", + "source_location": "L1683", "weight": 1.0 }, { - "source": "api_qc_rationale_1736", + "source": "api_qc_rationale_1742", "target": "api_qc_list_qc_material_stock_check_requisitions", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1736", + "source_location": "L1742", "weight": 1.0 }, { - "source": "api_qc_rationale_1762", + "source": "api_qc_rationale_1768", "target": "api_qc_mark_qc_material_usage_fully_used", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/qc.py", - "source_location": "L1762", + "source_location": "L1768", "weight": 1.0 }, { @@ -186173,7 +186221,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186182,7 +186230,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186191,7 +186239,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186200,7 +186248,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186209,7 +186257,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186218,7 +186266,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186227,7 +186275,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186236,7 +186284,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186245,7 +186293,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186254,7 +186302,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186263,7 +186311,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186272,7 +186320,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186281,7 +186329,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186290,7 +186338,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186299,7 +186347,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186308,7 +186356,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186317,7 +186365,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186326,7 +186374,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186335,7 +186383,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186344,7 +186392,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186353,7 +186401,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186362,7 +186410,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186371,7 +186419,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186380,7 +186428,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186389,61 +186437,61 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1610", + "source": "api_qc_rationale_1614", "target": "schemas_qc_work_order_qcworkordercreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1620", + "source": "api_qc_rationale_1624", "target": "schemas_qc_work_order_qcworkordercreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1630", + "source": "api_qc_rationale_1634", "target": "schemas_qc_work_order_qcworkordercreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1679", + "source": "api_qc_rationale_1683", "target": "schemas_qc_work_order_qcworkordercreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1736", + "source": "api_qc_rationale_1742", "target": "schemas_qc_work_order_qcworkordercreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1762", + "source": "api_qc_rationale_1768", "target": "schemas_qc_work_order_qcworkordercreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186452,7 +186500,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186461,7 +186509,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186470,7 +186518,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186479,7 +186527,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186488,7 +186536,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186497,7 +186545,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186506,7 +186554,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186515,7 +186563,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186524,7 +186572,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186533,7 +186581,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186542,7 +186590,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186551,7 +186599,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186560,7 +186608,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186569,7 +186617,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186578,7 +186626,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186587,7 +186635,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186596,7 +186644,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186605,7 +186653,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186614,7 +186662,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186623,7 +186671,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186632,7 +186680,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186641,7 +186689,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186650,7 +186698,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186659,7 +186707,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186668,61 +186716,61 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1610", + "source": "api_qc_rationale_1614", "target": "schemas_qc_work_order_qcworkorderupdatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1620", + "source": "api_qc_rationale_1624", "target": "schemas_qc_work_order_qcworkorderupdatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1630", + "source": "api_qc_rationale_1634", "target": "schemas_qc_work_order_qcworkorderupdatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1679", + "source": "api_qc_rationale_1683", "target": "schemas_qc_work_order_qcworkorderupdatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1736", + "source": "api_qc_rationale_1742", "target": "schemas_qc_work_order_qcworkorderupdatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { - "source": "api_qc_rationale_1762", + "source": "api_qc_rationale_1768", "target": "schemas_qc_work_order_qcworkorderupdatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L34", + "source_location": "L38", "weight": 0.8 }, { @@ -186731,7 +186779,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186740,7 +186788,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186749,7 +186797,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186758,7 +186806,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186767,7 +186815,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186776,7 +186824,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186785,7 +186833,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186794,7 +186842,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186803,7 +186851,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186812,7 +186860,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186821,7 +186869,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186830,7 +186878,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186839,7 +186887,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186848,7 +186896,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186857,7 +186905,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186866,7 +186914,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186875,7 +186923,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186884,7 +186932,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186893,7 +186941,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186902,7 +186950,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186911,7 +186959,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186920,7 +186968,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186929,7 +186977,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186938,7 +186986,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -186947,61 +186995,61 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { - "source": "api_qc_rationale_1610", + "source": "api_qc_rationale_1614", "target": "schemas_qc_task_qctaskcreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { - "source": "api_qc_rationale_1620", + "source": "api_qc_rationale_1624", "target": "schemas_qc_task_qctaskcreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { - "source": "api_qc_rationale_1630", + "source": "api_qc_rationale_1634", "target": "schemas_qc_task_qctaskcreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { - "source": "api_qc_rationale_1679", + "source": "api_qc_rationale_1683", "target": "schemas_qc_task_qctaskcreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { - "source": "api_qc_rationale_1736", + "source": "api_qc_rationale_1742", "target": "schemas_qc_task_qctaskcreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { - "source": "api_qc_rationale_1762", + "source": "api_qc_rationale_1768", "target": "schemas_qc_task_qctaskcreatebody", "relation": "uses", "confidence": "INFERRED", "source_file": "api/qc.py", - "source_location": "L35", + "source_location": "L39", "weight": 0.8 }, { @@ -202658,7 +202706,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "core/menu_guard.py", - "source_location": "L17", + "source_location": "L16", "weight": 1.0 }, { @@ -202668,7 +202716,17 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "core/menu_guard.py", - "source_location": "L25", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "core_menu_guard_user_has_menu_perm", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "core/menu_guard.py", + "source_location": "L32", "weight": 1.0 }, { @@ -223128,7 +223186,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L90", + "source_location": "L94", "weight": 1.0 }, { @@ -223138,7 +223196,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L91", + "source_location": "L95", "weight": 1.0 }, { @@ -223148,7 +223206,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L95", + "source_location": "L99", "weight": 1.0 }, { @@ -223158,7 +223216,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L95", + "source_location": "L99", "weight": 1.0 }, { @@ -223168,7 +223226,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L97", + "source_location": "L101", "weight": 1.0 }, { @@ -223178,7 +223236,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L97", + "source_location": "L101", "weight": 1.0 }, { @@ -223188,7 +223246,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L108", + "source_location": "L112", "weight": 1.0 }, { @@ -223198,7 +223256,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L109", + "source_location": "L113", "weight": 1.0 }, { @@ -223208,7 +223266,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L109", + "source_location": "L113", "weight": 1.0 }, { @@ -223218,7 +223276,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L111", + "source_location": "L115", "weight": 1.0 }, { @@ -223228,7 +223286,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L111", + "source_location": "L115", "weight": 1.0 }, { @@ -223238,7 +223296,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L123", + "source_location": "L127", "weight": 1.0 }, { @@ -223248,7 +223306,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L124", + "source_location": "L128", "weight": 1.0 }, { @@ -223258,7 +223316,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L140", + "source_location": "L144", "weight": 1.0 }, { @@ -223268,7 +223326,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L142", + "source_location": "L146", "weight": 1.0 }, { @@ -223278,7 +223336,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L142", + "source_location": "L146", "weight": 1.0 }, { @@ -223288,7 +223346,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L144", + "source_location": "L148", "weight": 1.0 }, { @@ -223298,7 +223356,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L144", + "source_location": "L148", "weight": 1.0 }, { @@ -223308,7 +223366,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L159", + "source_location": "L163", "weight": 1.0 }, { @@ -223318,7 +223376,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L160", + "source_location": "L164", "weight": 1.0 }, { @@ -223328,7 +223386,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L176", + "source_location": "L180", "weight": 1.0 }, { @@ -223338,7 +223396,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L179", + "source_location": "L183", "weight": 1.0 }, { @@ -223348,7 +223406,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L179", + "source_location": "L183", "weight": 1.0 }, { @@ -223358,7 +223416,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L181", + "source_location": "L185", "weight": 1.0 }, { @@ -223368,7 +223426,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L181", + "source_location": "L185", "weight": 1.0 }, { @@ -223378,7 +223436,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L195", + "source_location": "L199", "weight": 1.0 }, { @@ -223388,7 +223446,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L196", + "source_location": "L200", "weight": 1.0 }, { @@ -223398,7 +223456,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L197", + "source_location": "L201", "weight": 1.0 }, { @@ -223408,7 +223466,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L199", + "source_location": "L203", "weight": 1.0 }, { @@ -223418,7 +223476,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L199", + "source_location": "L203", "weight": 1.0 }, { @@ -223428,7 +223486,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L244", + "source_location": "L248", "weight": 1.0 }, { @@ -223438,7 +223496,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L245", + "source_location": "L249", "weight": 1.0 }, { @@ -223448,7 +223506,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L255", + "source_location": "L259", "weight": 1.0 }, { @@ -223458,7 +223516,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L255", + "source_location": "L259", "weight": 1.0 }, { @@ -223468,7 +223526,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L257", + "source_location": "L261", "weight": 1.0 }, { @@ -223478,7 +223536,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L257", + "source_location": "L261", "weight": 1.0 }, { @@ -223488,7 +223546,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L269", + "source_location": "L273", "weight": 1.0 }, { @@ -223498,7 +223556,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L270", + "source_location": "L274", "weight": 1.0 }, { @@ -223508,7 +223566,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L270", + "source_location": "L274", "weight": 1.0 }, { @@ -223518,7 +223576,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L272", + "source_location": "L276", "weight": 1.0 }, { @@ -223528,7 +223586,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L272", + "source_location": "L276", "weight": 1.0 }, { @@ -223538,7 +223596,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L284", + "source_location": "L288", "weight": 1.0 }, { @@ -223548,7 +223606,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L285", + "source_location": "L289", "weight": 1.0 }, { @@ -223558,7 +223616,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L295", + "source_location": "L299", "weight": 1.0 }, { @@ -223568,7 +223626,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L297", + "source_location": "L301", "weight": 1.0 }, { @@ -223578,7 +223636,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L297", + "source_location": "L301", "weight": 1.0 }, { @@ -223588,7 +223646,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L299", + "source_location": "L303", "weight": 1.0 }, { @@ -223598,7 +223656,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L299", + "source_location": "L303", "weight": 1.0 }, { @@ -223608,7 +223666,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L314", + "source_location": "L318", "weight": 1.0 }, { @@ -223618,7 +223676,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L315", + "source_location": "L319", "weight": 1.0 }, { @@ -223628,7 +223686,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L325", + "source_location": "L329", "weight": 1.0 }, { @@ -223638,7 +223696,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L328", + "source_location": "L332", "weight": 1.0 }, { @@ -223648,7 +223706,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L328", + "source_location": "L332", "weight": 1.0 }, { @@ -223658,7 +223716,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L330", + "source_location": "L334", "weight": 1.0 }, { @@ -223668,7 +223726,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L330", + "source_location": "L334", "weight": 1.0 }, { @@ -223678,7 +223736,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L344", + "source_location": "L348", "weight": 1.0 }, { @@ -223688,7 +223746,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L345", + "source_location": "L349", "weight": 1.0 }, { @@ -223698,7 +223756,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L346", + "source_location": "L350", "weight": 1.0 }, { @@ -223708,7 +223766,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L348", + "source_location": "L352", "weight": 1.0 }, { @@ -223718,7 +223776,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L348", + "source_location": "L352", "weight": 1.0 }, { @@ -223728,7 +223786,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L412", + "source_location": "L416", "weight": 1.0 }, { @@ -223738,7 +223796,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L413", + "source_location": "L417", "weight": 1.0 }, { @@ -223748,7 +223806,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L417", + "source_location": "L421", "weight": 1.0 }, { @@ -223758,7 +223816,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L417", + "source_location": "L421", "weight": 1.0 }, { @@ -223768,7 +223826,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L419", + "source_location": "L423", "weight": 1.0 }, { @@ -223778,7 +223836,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L419", + "source_location": "L423", "weight": 1.0 }, { @@ -223788,7 +223846,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L430", + "source_location": "L434", "weight": 1.0 }, { @@ -223798,7 +223856,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L431", + "source_location": "L435", "weight": 1.0 }, { @@ -223808,7 +223866,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L431", + "source_location": "L435", "weight": 1.0 }, { @@ -223818,7 +223876,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L433", + "source_location": "L437", "weight": 1.0 }, { @@ -223828,7 +223886,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L433", + "source_location": "L437", "weight": 1.0 }, { @@ -223838,7 +223896,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L445", + "source_location": "L449", "weight": 1.0 }, { @@ -223848,7 +223906,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L446", + "source_location": "L450", "weight": 1.0 }, { @@ -223858,7 +223916,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L455", + "source_location": "L459", "weight": 1.0 }, { @@ -223868,7 +223926,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L457", + "source_location": "L461", "weight": 1.0 }, { @@ -223878,7 +223936,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L457", + "source_location": "L461", "weight": 1.0 }, { @@ -223888,7 +223946,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L459", + "source_location": "L463", "weight": 1.0 }, { @@ -223898,7 +223956,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L459", + "source_location": "L463", "weight": 1.0 }, { @@ -223908,7 +223966,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L474", + "source_location": "L478", "weight": 1.0 }, { @@ -223918,7 +223976,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L475", + "source_location": "L479", "weight": 1.0 }, { @@ -223928,7 +223986,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L484", + "source_location": "L488", "weight": 1.0 }, { @@ -223938,7 +223996,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L487", + "source_location": "L491", "weight": 1.0 }, { @@ -223948,7 +224006,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L487", + "source_location": "L491", "weight": 1.0 }, { @@ -223958,7 +224016,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L489", + "source_location": "L493", "weight": 1.0 }, { @@ -223968,7 +224026,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L489", + "source_location": "L493", "weight": 1.0 }, { @@ -223978,7 +224036,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L503", + "source_location": "L507", "weight": 1.0 }, { @@ -223988,7 +224046,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L504", + "source_location": "L508", "weight": 1.0 }, { @@ -223998,7 +224056,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L505", + "source_location": "L509", "weight": 1.0 }, { @@ -224008,7 +224066,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L507", + "source_location": "L511", "weight": 1.0 }, { @@ -224018,7 +224076,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L507", + "source_location": "L511", "weight": 1.0 }, { @@ -224028,7 +224086,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L525", + "source_location": "L529", "weight": 1.0 }, { @@ -224038,7 +224096,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L526", + "source_location": "L530", "weight": 1.0 }, { @@ -224048,7 +224106,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L526", + "source_location": "L530", "weight": 1.0 }, { @@ -224058,7 +224116,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L528", + "source_location": "L532", "weight": 1.0 }, { @@ -224068,7 +224126,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L528", + "source_location": "L532", "weight": 1.0 }, { @@ -224078,7 +224136,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L542", + "source_location": "L546", "weight": 1.0 }, { @@ -224088,7 +224146,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L543", + "source_location": "L547", "weight": 1.0 }, { @@ -224098,7 +224156,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L544", + "source_location": "L548", "weight": 1.0 }, { @@ -224108,7 +224166,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L544", + "source_location": "L548", "weight": 1.0 }, { @@ -224118,7 +224176,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L548", + "source_location": "L552", "weight": 1.0 }, { @@ -224128,7 +224186,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L548", + "source_location": "L552", "weight": 1.0 }, { @@ -224138,7 +224196,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L577", + "source_location": "L581", "weight": 1.0 }, { @@ -224148,7 +224206,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L578", + "source_location": "L582", "weight": 1.0 }, { @@ -224158,7 +224216,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L579", + "source_location": "L583", "weight": 1.0 }, { @@ -224168,7 +224226,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L583", + "source_location": "L587", "weight": 1.0 }, { @@ -224178,7 +224236,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L595", + "source_location": "L599", "weight": 1.0 }, { @@ -224188,7 +224246,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L598", + "source_location": "L602", "weight": 1.0 }, { @@ -224198,7 +224256,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L601", + "source_location": "L605", "weight": 1.0 }, { @@ -224208,7 +224266,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L607", + "source_location": "L611", "weight": 1.0 }, { @@ -224218,7 +224276,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L619", + "source_location": "L623", "weight": 1.0 }, { @@ -224228,7 +224286,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L619", + "source_location": "L623", "weight": 1.0 }, { @@ -224238,7 +224296,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L621", + "source_location": "L625", "weight": 1.0 }, { @@ -224248,7 +224306,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L621", + "source_location": "L625", "weight": 1.0 }, { @@ -224258,7 +224316,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L645", + "source_location": "L649", "weight": 1.0 }, { @@ -224268,7 +224326,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L646", + "source_location": "L650", "weight": 1.0 }, { @@ -224278,7 +224336,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L663", + "source_location": "L667", "weight": 1.0 }, { @@ -224288,7 +224346,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L663", + "source_location": "L667", "weight": 1.0 }, { @@ -224298,7 +224356,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L665", + "source_location": "L669", "weight": 1.0 }, { @@ -224308,7 +224366,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L665", + "source_location": "L669", "weight": 1.0 }, { @@ -224318,7 +224376,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L677", + "source_location": "L681", "weight": 1.0 }, { @@ -224328,7 +224386,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L678", + "source_location": "L682", "weight": 1.0 }, { @@ -224338,7 +224396,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L679", + "source_location": "L683", "weight": 1.0 }, { @@ -224348,7 +224406,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L681", + "source_location": "L685", "weight": 1.0 }, { @@ -224358,7 +224416,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L681", + "source_location": "L685", "weight": 1.0 }, { @@ -224368,7 +224426,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L695", + "source_location": "L699", "weight": 1.0 }, { @@ -224378,7 +224436,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L697", + "source_location": "L701", "weight": 1.0 }, { @@ -224388,7 +224446,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L699", + "source_location": "L703", "weight": 1.0 }, { @@ -224398,7 +224456,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L699", + "source_location": "L703", "weight": 1.0 }, { @@ -224408,7 +224466,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L714", + "source_location": "L718", "weight": 1.0 }, { @@ -224418,7 +224476,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L719", + "source_location": "L723", "weight": 1.0 }, { @@ -224428,7 +224486,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L725", + "source_location": "L729", "weight": 1.0 }, { @@ -224438,7 +224496,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L725", + "source_location": "L729", "weight": 1.0 }, { @@ -224448,7 +224506,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L727", + "source_location": "L731", "weight": 1.0 }, { @@ -224458,7 +224516,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L727", + "source_location": "L731", "weight": 1.0 }, { @@ -224468,7 +224526,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L743", + "source_location": "L747", "weight": 1.0 }, { @@ -224478,7 +224536,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L744", + "source_location": "L748", "weight": 1.0 }, { @@ -224488,7 +224546,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L744", + "source_location": "L748", "weight": 1.0 }, { @@ -224498,7 +224556,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L745", + "source_location": "L749", "weight": 1.0 }, { @@ -224508,7 +224566,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L747", + "source_location": "L751", "weight": 1.0 }, { @@ -224518,7 +224576,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L747", + "source_location": "L751", "weight": 1.0 }, { @@ -224528,7 +224586,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L758", + "source_location": "L762", "weight": 1.0 }, { @@ -224538,7 +224596,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L759", + "source_location": "L763", "weight": 1.0 }, { @@ -224548,7 +224606,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L769", + "source_location": "L773", "weight": 1.0 }, { @@ -224558,7 +224616,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L770", + "source_location": "L774", "weight": 1.0 }, { @@ -224568,7 +224626,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L772", + "source_location": "L776", "weight": 1.0 }, { @@ -224578,7 +224636,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L772", + "source_location": "L776", "weight": 1.0 }, { @@ -224588,7 +224646,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L774", + "source_location": "L778", "weight": 1.0 }, { @@ -224598,7 +224656,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L774", + "source_location": "L778", "weight": 1.0 }, { @@ -224608,29 +224666,29 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L797", - "weight": 1.0 - }, - { - "source": "api_qc_create_qc_task", - "target": "crud_qc_task_create_qc_task_manual", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L798", - "weight": 1.0 - }, - { - "source": "api_qc_create_qc_task", - "target": "crud_base_crudbase_get", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L801", "weight": 1.0 }, + { + "source": "api_qc_create_qc_task", + "target": "crud_qc_task_create_qc_task_manual", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L802", + "weight": 1.0 + }, + { + "source": "api_qc_create_qc_task", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L805", + "weight": 1.0 + }, { "source": "api_qc_create_qc_task", "target": "core_response_success_response", @@ -224638,7 +224696,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L814", + "source_location": "L818", "weight": 1.0 }, { @@ -224648,7 +224706,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L814", + "source_location": "L818", "weight": 1.0 }, { @@ -224658,7 +224716,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L816", + "source_location": "L820", "weight": 1.0 }, { @@ -224668,7 +224726,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L816", + "source_location": "L820", "weight": 1.0 }, { @@ -224678,7 +224736,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L836", + "source_location": "L840", "weight": 1.0 }, { @@ -224688,7 +224746,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L837", + "source_location": "L841", "weight": 1.0 }, { @@ -224698,7 +224756,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L839", + "source_location": "L843", "weight": 1.0 }, { @@ -224708,7 +224766,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L850", + "source_location": "L854", "weight": 1.0 }, { @@ -224718,7 +224776,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L850", + "source_location": "L854", "weight": 1.0 }, { @@ -224728,7 +224786,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L852", + "source_location": "L856", "weight": 1.0 }, { @@ -224738,7 +224796,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L852", + "source_location": "L856", "weight": 1.0 }, { @@ -224748,7 +224806,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L870", + "source_location": "L874", "weight": 1.0 }, { @@ -224758,7 +224816,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L871", + "source_location": "L875", "weight": 1.0 }, { @@ -224768,7 +224826,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L883", + "source_location": "L887", "weight": 1.0 }, { @@ -224778,7 +224836,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L883", + "source_location": "L887", "weight": 1.0 }, { @@ -224788,7 +224846,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L885", + "source_location": "L889", "weight": 1.0 }, { @@ -224798,7 +224856,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L885", + "source_location": "L889", "weight": 1.0 }, { @@ -224808,7 +224866,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L897", + "source_location": "L901", "weight": 1.0 }, { @@ -224818,7 +224876,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L898", + "source_location": "L902", "weight": 1.0 }, { @@ -224828,7 +224886,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L899", + "source_location": "L903", "weight": 1.0 }, { @@ -224838,7 +224896,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L901", + "source_location": "L905", "weight": 1.0 }, { @@ -224848,7 +224906,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L901", + "source_location": "L905", "weight": 1.0 }, { @@ -224858,7 +224916,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L916", + "source_location": "L920", "weight": 1.0 }, { @@ -224868,7 +224926,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L918", + "source_location": "L922", "weight": 1.0 }, { @@ -224878,7 +224936,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L918", + "source_location": "L922", "weight": 1.0 }, { @@ -224888,7 +224946,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L919", + "source_location": "L923", "weight": 1.0 }, { @@ -224898,7 +224956,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L919", + "source_location": "L923", "weight": 1.0 }, { @@ -224908,7 +224966,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L921", + "source_location": "L925", "weight": 1.0 }, { @@ -224918,7 +224976,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L921", + "source_location": "L925", "weight": 1.0 }, { @@ -224928,7 +224986,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L935", + "source_location": "L939", "weight": 1.0 }, { @@ -224938,7 +224996,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L936", + "source_location": "L940", "weight": 1.0 }, { @@ -224948,7 +225006,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L937", + "source_location": "L941", "weight": 1.0 }, { @@ -224958,7 +225016,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L939", + "source_location": "L943", "weight": 1.0 }, { @@ -224968,7 +225026,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L939", + "source_location": "L943", "weight": 1.0 }, { @@ -224978,7 +225036,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L941", + "source_location": "L945", "weight": 1.0 }, { @@ -224988,7 +225046,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L941", + "source_location": "L945", "weight": 1.0 }, { @@ -224998,7 +225056,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L955", + "source_location": "L959", "weight": 1.0 }, { @@ -225008,7 +225066,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L956", + "source_location": "L960", "weight": 1.0 }, { @@ -225018,7 +225076,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L956", + "source_location": "L960", "weight": 1.0 }, { @@ -225028,7 +225086,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L958", + "source_location": "L962", "weight": 1.0 }, { @@ -225038,7 +225096,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L958", + "source_location": "L962", "weight": 1.0 }, { @@ -225048,7 +225106,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L971", + "source_location": "L975", "weight": 1.0 }, { @@ -225058,7 +225116,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L972", + "source_location": "L976", "weight": 1.0 }, { @@ -225068,7 +225126,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L979", + "source_location": "L983", "weight": 1.0 }, { @@ -225078,7 +225136,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L981", + "source_location": "L985", "weight": 1.0 }, { @@ -225088,7 +225146,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L981", + "source_location": "L985", "weight": 1.0 }, { @@ -225098,42 +225156,12 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L993", - "weight": 1.0 - }, - { - "source": "api_qc_get_task_material_usages", - "target": "crud_workflow_get_task", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L994", - "weight": 1.0 - }, - { - "source": "api_qc_get_task_material_usages", - "target": "core_response_error_response", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L996", - "weight": 1.0 - }, - { - "source": "api_qc_get_task_material_usages", - "target": "core_response_success_response", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L997", "weight": 1.0 }, { "source": "api_qc_get_task_material_usages", - "target": "crud_qc_material_usage_list_usages_by_task", + "target": "crud_workflow_get_task", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -225143,7 +225171,17 @@ }, { "source": "api_qc_get_task_material_usages", - "target": "str", + "target": "core_response_error_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1000", + "weight": 1.0 + }, + { + "source": "api_qc_get_task_material_usages", + "target": "core_response_success_response", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -225151,6 +225189,26 @@ "source_location": "L1001", "weight": 1.0 }, + { + "source": "api_qc_get_task_material_usages", + "target": "crud_qc_material_usage_list_usages_by_task", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1002", + "weight": 1.0 + }, + { + "source": "api_qc_get_task_material_usages", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1005", + "weight": 1.0 + }, { "source": "api_qc_complete_task_with_result", "target": "api_clinical_payment_get_tenant_no", @@ -225158,42 +225216,32 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1015", - "weight": 1.0 - }, - { - "source": "api_qc_complete_task_with_result", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1016", - "weight": 1.0 - }, - { - "source": "api_qc_complete_task_with_result", - "target": "crud_workflow_get_task", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1017", - "weight": 1.0 - }, - { - "source": "api_qc_complete_task_with_result", - "target": "core_response_error_response", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1019", "weight": 1.0 }, { "source": "api_qc_complete_task_with_result", - "target": "crud_qc_task_result_save_results_for_task", + "target": "api_production_get_current_user_id", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1020", + "weight": 1.0 + }, + { + "source": "api_qc_complete_task_with_result", + "target": "crud_workflow_get_task", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1021", + "weight": 1.0 + }, + { + "source": "api_qc_complete_task_with_result", + "target": "core_response_error_response", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -225203,17 +225251,17 @@ }, { "source": "api_qc_complete_task_with_result", - "target": "crud_qc_task_update_task_attachments", + "target": "crud_qc_task_result_save_results_for_task", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1030", + "source_location": "L1027", "weight": 1.0 }, { "source": "api_qc_complete_task_with_result", - "target": "crud_qc_task_apply_task_result", + "target": "crud_qc_task_update_task_attachments", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -225221,6 +225269,16 @@ "source_location": "L1034", "weight": 1.0 }, + { + "source": "api_qc_complete_task_with_result", + "target": "crud_qc_task_apply_task_result", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1038", + "weight": 1.0 + }, { "source": "api_qc_complete_task_with_result", "target": "crud_qc_work_order_try_complete_work_order", @@ -225228,7 +225286,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1047", + "source_location": "L1051", "weight": 1.0 }, { @@ -225238,7 +225296,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1048", + "source_location": "L1052", "weight": 1.0 }, { @@ -225248,7 +225306,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1049", + "source_location": "L1053", "weight": 1.0 }, { @@ -225258,7 +225316,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1055", + "source_location": "L1059", "weight": 1.0 }, { @@ -225268,7 +225326,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1077", + "source_location": "L1081", "weight": 1.0 }, { @@ -225278,7 +225336,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1079", + "source_location": "L1083", "weight": 1.0 }, { @@ -225288,7 +225346,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1084", + "source_location": "L1088", "weight": 1.0 }, { @@ -225298,7 +225356,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1086", + "source_location": "L1090", "weight": 1.0 }, { @@ -225308,7 +225366,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1086", + "source_location": "L1090", "weight": 1.0 }, { @@ -225318,7 +225376,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1088", + "source_location": "L1092", "weight": 1.0 }, { @@ -225328,7 +225386,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1088", + "source_location": "L1092", "weight": 1.0 }, { @@ -225338,7 +225396,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1102", + "source_location": "L1106", "weight": 1.0 }, { @@ -225348,7 +225406,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1103", + "source_location": "L1107", "weight": 1.0 }, { @@ -225358,7 +225416,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1103", + "source_location": "L1107", "weight": 1.0 }, { @@ -225368,7 +225426,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1104", + "source_location": "L1108", "weight": 1.0 }, { @@ -225378,7 +225436,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1106", + "source_location": "L1110", "weight": 1.0 }, { @@ -225388,7 +225446,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1106", + "source_location": "L1110", "weight": 1.0 }, { @@ -225398,7 +225456,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1234", + "source_location": "L1238", "weight": 1.0 }, { @@ -225408,7 +225466,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1235", + "source_location": "L1239", "weight": 1.0 }, { @@ -225418,7 +225476,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1245", + "source_location": "L1249", "weight": 1.0 }, { @@ -225428,7 +225486,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1245", + "source_location": "L1249", "weight": 1.0 }, { @@ -225438,7 +225496,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1247", + "source_location": "L1251", "weight": 1.0 }, { @@ -225448,7 +225506,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1247", + "source_location": "L1251", "weight": 1.0 }, { @@ -225458,7 +225516,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1261", + "source_location": "L1265", "weight": 1.0 }, { @@ -225468,7 +225526,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1262", + "source_location": "L1266", "weight": 1.0 }, { @@ -225478,7 +225536,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1263", + "source_location": "L1267", "weight": 1.0 }, { @@ -225488,7 +225546,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1272", + "source_location": "L1276", "weight": 1.0 }, { @@ -225498,7 +225556,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1272", + "source_location": "L1276", "weight": 1.0 }, { @@ -225508,7 +225566,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1283", + "source_location": "L1287", "weight": 1.0 }, { @@ -225518,7 +225576,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1284", + "source_location": "L1288", "weight": 1.0 }, { @@ -225528,7 +225586,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1286", + "source_location": "L1290", "weight": 1.0 }, { @@ -225538,7 +225596,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1293", + "source_location": "L1297", "weight": 1.0 }, { @@ -225548,7 +225606,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1294", + "source_location": "L1298", "weight": 1.0 }, { @@ -225558,7 +225616,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1295", + "source_location": "L1299", "weight": 1.0 }, { @@ -225568,7 +225626,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1299", + "source_location": "L1303", "weight": 1.0 }, { @@ -225578,7 +225636,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1299", + "source_location": "L1303", "weight": 1.0 }, { @@ -225588,7 +225646,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1311", + "source_location": "L1315", "weight": 1.0 }, { @@ -225598,7 +225656,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1312", + "source_location": "L1316", "weight": 1.0 }, { @@ -225608,7 +225666,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1313", + "source_location": "L1317", "weight": 1.0 }, { @@ -225618,7 +225676,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1314", + "source_location": "L1318", "weight": 1.0 }, { @@ -225628,7 +225686,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1316", + "source_location": "L1320", "weight": 1.0 }, { @@ -225638,7 +225696,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1316", + "source_location": "L1320", "weight": 1.0 }, { @@ -225648,7 +225706,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1331", + "source_location": "L1335", "weight": 1.0 }, { @@ -225658,7 +225716,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1332", + "source_location": "L1336", "weight": 1.0 }, { @@ -225668,7 +225726,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1336", + "source_location": "L1340", "weight": 1.0 }, { @@ -225678,7 +225736,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1336", + "source_location": "L1340", "weight": 1.0 }, { @@ -225688,7 +225746,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1338", + "source_location": "L1342", "weight": 1.0 }, { @@ -225698,7 +225756,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1338", + "source_location": "L1342", "weight": 1.0 }, { @@ -225708,7 +225766,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1349", + "source_location": "L1353", "weight": 1.0 }, { @@ -225718,7 +225776,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1350", + "source_location": "L1354", "weight": 1.0 }, { @@ -225728,7 +225786,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1350", + "source_location": "L1354", "weight": 1.0 }, { @@ -225738,7 +225796,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1352", + "source_location": "L1356", "weight": 1.0 }, { @@ -225748,7 +225806,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1352", + "source_location": "L1356", "weight": 1.0 }, { @@ -225758,7 +225816,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1362", + "source_location": "L1366", "weight": 1.0 }, { @@ -225768,7 +225826,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1363", + "source_location": "L1367", "weight": 1.0 }, { @@ -225778,7 +225836,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1364", + "source_location": "L1368", "weight": 1.0 }, { @@ -225788,7 +225846,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1370", + "source_location": "L1374", "weight": 1.0 }, { @@ -225798,7 +225856,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1373", + "source_location": "L1377", "weight": 1.0 }, { @@ -225808,7 +225866,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1378", + "source_location": "L1382", "weight": 1.0 }, { @@ -225818,7 +225876,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1378", + "source_location": "L1382", "weight": 1.0 }, { @@ -225828,7 +225886,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1380", + "source_location": "L1384", "weight": 1.0 }, { @@ -225838,29 +225896,29 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1393", - "weight": 1.0 - }, - { - "source": "api_qc_update_qc_material", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1394", - "weight": 1.0 - }, - { - "source": "api_qc_update_qc_material", - "target": "str", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1397", "weight": 1.0 }, + { + "source": "api_qc_update_qc_material", + "target": "api_production_get_current_user_id", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1398", + "weight": 1.0 + }, + { + "source": "api_qc_update_qc_material", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1401", + "weight": 1.0 + }, { "source": "api_qc_update_qc_material", "target": "crud_qc_material_norm_status", @@ -225868,7 +225926,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1399", + "source_location": "L1403", "weight": 1.0 }, { @@ -225878,7 +225936,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1400", + "source_location": "L1404", "weight": 1.0 }, { @@ -225888,7 +225946,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1407", + "source_location": "L1411", "weight": 1.0 }, { @@ -225898,7 +225956,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1407", + "source_location": "L1411", "weight": 1.0 }, { @@ -225908,7 +225966,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1409", + "source_location": "L1413", "weight": 1.0 }, { @@ -225918,7 +225976,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1421", + "source_location": "L1425", "weight": 1.0 }, { @@ -225928,7 +225986,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1422", + "source_location": "L1426", "weight": 1.0 }, { @@ -225938,7 +225996,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1423", + "source_location": "L1427", "weight": 1.0 }, { @@ -225948,7 +226006,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1424", + "source_location": "L1428", "weight": 1.0 }, { @@ -225958,7 +226016,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1426", + "source_location": "L1430", "weight": 1.0 }, { @@ -225968,7 +226026,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1426", + "source_location": "L1430", "weight": 1.0 }, { @@ -225978,29 +226036,29 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1438", - "weight": 1.0 - }, - { - "source": "api_qc_batch_stock_in_qc_material", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1439", - "weight": 1.0 - }, - { - "source": "api_qc_batch_stock_in_qc_material", - "target": "core_utils_parse_datetime", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1442", "weight": 1.0 }, + { + "source": "api_qc_batch_stock_in_qc_material", + "target": "api_production_get_current_user_id", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1443", + "weight": 1.0 + }, + { + "source": "api_qc_batch_stock_in_qc_material", + "target": "core_utils_parse_datetime", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1446", + "weight": 1.0 + }, { "source": "api_qc_batch_stock_in_qc_material", "target": "core_response_error_response", @@ -226008,7 +226066,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1444", + "source_location": "L1448", "weight": 1.0 }, { @@ -226018,7 +226076,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1469", + "source_location": "L1473", "weight": 1.0 }, { @@ -226028,7 +226086,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1477", + "source_location": "L1481", "weight": 1.0 }, { @@ -226038,7 +226096,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1479", + "source_location": "L1483", "weight": 1.0 }, { @@ -226048,29 +226106,29 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1491", - "weight": 1.0 - }, - { - "source": "api_qc_batch_stock_out_qc_material", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1492", - "weight": 1.0 - }, - { - "source": "api_qc_batch_stock_out_qc_material", - "target": "core_utils_parse_datetime", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1495", "weight": 1.0 }, + { + "source": "api_qc_batch_stock_out_qc_material", + "target": "api_production_get_current_user_id", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1496", + "weight": 1.0 + }, + { + "source": "api_qc_batch_stock_out_qc_material", + "target": "core_utils_parse_datetime", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1499", + "weight": 1.0 + }, { "source": "api_qc_batch_stock_out_qc_material", "target": "core_response_error_response", @@ -226078,7 +226136,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1497", + "source_location": "L1501", "weight": 1.0 }, { @@ -226088,7 +226146,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1503", + "source_location": "L1507", "weight": 1.0 }, { @@ -226098,7 +226156,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1513", + "source_location": "L1517", "weight": 1.0 }, { @@ -226108,7 +226166,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1515", + "source_location": "L1519", "weight": 1.0 }, { @@ -226118,29 +226176,29 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1527", - "weight": 1.0 - }, - { - "source": "api_qc_batch_discard_qc_material", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1528", - "weight": 1.0 - }, - { - "source": "api_qc_batch_discard_qc_material", - "target": "core_utils_parse_datetime", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1531", "weight": 1.0 }, + { + "source": "api_qc_batch_discard_qc_material", + "target": "api_production_get_current_user_id", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1532", + "weight": 1.0 + }, + { + "source": "api_qc_batch_discard_qc_material", + "target": "core_utils_parse_datetime", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1535", + "weight": 1.0 + }, { "source": "api_qc_batch_discard_qc_material", "target": "core_response_error_response", @@ -226148,7 +226206,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1533", + "source_location": "L1537", "weight": 1.0 }, { @@ -226158,7 +226216,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1546", + "source_location": "L1550", "weight": 1.0 }, { @@ -226168,7 +226226,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1555", + "source_location": "L1559", "weight": 1.0 }, { @@ -226178,7 +226236,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1557", + "source_location": "L1561", "weight": 1.0 }, { @@ -226188,42 +226246,32 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1570", - "weight": 1.0 - }, - { - "source": "api_qc_stock_in_qc_material", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1571", - "weight": 1.0 - }, - { - "source": "api_qc_stock_in_qc_material", - "target": "core_utils_parse_datetime", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1574", "weight": 1.0 }, { "source": "api_qc_stock_in_qc_material", - "target": "core_response_error_response", + "target": "api_production_get_current_user_id", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1576", + "source_location": "L1575", "weight": 1.0 }, { "source": "api_qc_stock_in_qc_material", - "target": "crud_qc_material_stock_batch_stock_in_one", + "target": "core_utils_parse_datetime", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1578", + "weight": 1.0 + }, + { + "source": "api_qc_stock_in_qc_material", + "target": "core_response_error_response", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -226231,6 +226279,16 @@ "source_location": "L1580", "weight": 1.0 }, + { + "source": "api_qc_stock_in_qc_material", + "target": "crud_qc_material_stock_batch_stock_in_one", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1584", + "weight": 1.0 + }, { "source": "api_qc_stock_in_qc_material", "target": "str", @@ -226238,7 +226296,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1591", + "source_location": "L1595", "weight": 1.0 }, { @@ -226248,7 +226306,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1597", + "source_location": "L1601", "weight": 1.0 }, { @@ -226258,7 +226316,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1597", + "source_location": "L1601", "weight": 1.0 }, { @@ -226268,7 +226326,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1651", + "source_location": "L1655", "weight": 1.0 }, { @@ -226278,7 +226336,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1652", + "source_location": "L1656", "weight": 1.0 }, { @@ -226288,7 +226346,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1659", + "source_location": "L1663", "weight": 1.0 }, { @@ -226298,7 +226356,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1659", + "source_location": "L1663", "weight": 1.0 }, { @@ -226308,7 +226366,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1661", + "source_location": "L1665", "weight": 1.0 }, { @@ -226318,7 +226376,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1661", + "source_location": "L1665", "weight": 1.0 }, { @@ -226328,32 +226386,12 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1681", - "weight": 1.0 - }, - { - "source": "api_qc_list_my_qc_material_usages", - "target": "crud_qc_material_usage_list_my_usages", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", - "source_location": "L1682", - "weight": 1.0 - }, - { - "source": "api_qc_list_my_qc_material_usages", - "target": "api_production_get_current_user_id", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/qc.py", "source_location": "L1685", "weight": 1.0 }, { "source": "api_qc_list_my_qc_material_usages", - "target": "crud_base_crudbase_get", + "target": "crud_qc_material_usage_list_my_usages", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -226361,6 +226399,46 @@ "source_location": "L1686", "weight": 1.0 }, + { + "source": "api_qc_list_my_qc_material_usages", + "target": "api_production_get_current_user_id", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1689", + "weight": 1.0 + }, + { + "source": "api_qc_list_my_qc_material_usages", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1690", + "weight": 1.0 + }, + { + "source": "api_qc_list_my_qc_material_usages", + "target": "core_menu_guard_user_has_menu_perm", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1700", + "weight": 1.0 + }, + { + "source": "api_qc_list_my_qc_material_usages", + "target": "core_menu_guard_strip_row_fields", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/qc.py", + "source_location": "L1701", + "weight": 1.0 + }, { "source": "api_qc_list_my_qc_material_usages", "target": "core_response_success_response", @@ -226368,7 +226446,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1696", + "source_location": "L1702", "weight": 1.0 }, { @@ -226378,7 +226456,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1696", + "source_location": "L1702", "weight": 1.0 }, { @@ -226388,7 +226466,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1698", + "source_location": "L1704", "weight": 1.0 }, { @@ -226398,7 +226476,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1698", + "source_location": "L1704", "weight": 1.0 }, { @@ -226408,7 +226486,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1713", + "source_location": "L1719", "weight": 1.0 }, { @@ -226418,7 +226496,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1714", + "source_location": "L1720", "weight": 1.0 }, { @@ -226428,7 +226506,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1717", + "source_location": "L1723", "weight": 1.0 }, { @@ -226438,7 +226516,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1720", + "source_location": "L1726", "weight": 1.0 }, { @@ -226448,7 +226526,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1721", + "source_location": "L1727", "weight": 1.0 }, { @@ -226458,7 +226536,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1738", + "source_location": "L1744", "weight": 1.0 }, { @@ -226468,7 +226546,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1739", + "source_location": "L1745", "weight": 1.0 }, { @@ -226478,7 +226556,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1747", + "source_location": "L1753", "weight": 1.0 }, { @@ -226488,7 +226566,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1747", + "source_location": "L1753", "weight": 1.0 }, { @@ -226498,7 +226576,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1749", + "source_location": "L1755", "weight": 1.0 }, { @@ -226508,7 +226586,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1749", + "source_location": "L1755", "weight": 1.0 }, { @@ -226518,7 +226596,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1764", + "source_location": "L1770", "weight": 1.0 }, { @@ -226528,7 +226606,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1765", + "source_location": "L1771", "weight": 1.0 }, { @@ -226538,7 +226616,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1766", + "source_location": "L1772", "weight": 1.0 }, { @@ -226548,7 +226626,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1773", + "source_location": "L1779", "weight": 1.0 }, { @@ -226558,7 +226636,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1775", + "source_location": "L1781", "weight": 1.0 }, { @@ -226568,7 +226646,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1775", + "source_location": "L1781", "weight": 1.0 }, { @@ -226578,7 +226656,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1829", + "source_location": "L1835", "weight": 1.0 }, { @@ -226588,7 +226666,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1830", + "source_location": "L1836", "weight": 1.0 }, { @@ -226598,7 +226676,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1841", + "source_location": "L1847", "weight": 1.0 }, { @@ -226608,7 +226686,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1841", + "source_location": "L1847", "weight": 1.0 }, { @@ -226618,7 +226696,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1843", + "source_location": "L1849", "weight": 1.0 }, { @@ -226628,7 +226706,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1843", + "source_location": "L1849", "weight": 1.0 }, { @@ -226638,7 +226716,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1855", + "source_location": "L1861", "weight": 1.0 }, { @@ -226648,7 +226726,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1856", + "source_location": "L1862", "weight": 1.0 }, { @@ -226658,7 +226736,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1857", + "source_location": "L1863", "weight": 1.0 }, { @@ -226668,7 +226746,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1858", + "source_location": "L1864", "weight": 1.0 }, { @@ -226678,7 +226756,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1867", + "source_location": "L1873", "weight": 1.0 }, { @@ -226688,7 +226766,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1869", + "source_location": "L1875", "weight": 1.0 }, { @@ -226698,7 +226776,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1869", + "source_location": "L1875", "weight": 1.0 }, { @@ -226708,7 +226786,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1881", + "source_location": "L1887", "weight": 1.0 }, { @@ -226718,7 +226796,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1882", + "source_location": "L1888", "weight": 1.0 }, { @@ -226728,7 +226806,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1883", + "source_location": "L1889", "weight": 1.0 }, { @@ -226738,7 +226816,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1885", + "source_location": "L1891", "weight": 1.0 }, { @@ -226748,7 +226826,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1885", + "source_location": "L1891", "weight": 1.0 }, { @@ -226758,7 +226836,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1898", + "source_location": "L1904", "weight": 1.0 }, { @@ -226768,7 +226846,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1899", + "source_location": "L1905", "weight": 1.0 }, { @@ -226778,7 +226856,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1900", + "source_location": "L1906", "weight": 1.0 }, { @@ -226788,7 +226866,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1901", + "source_location": "L1907", "weight": 1.0 }, { @@ -226798,7 +226876,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1909", + "source_location": "L1915", "weight": 1.0 }, { @@ -226808,7 +226886,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1911", + "source_location": "L1917", "weight": 1.0 }, { @@ -226818,7 +226896,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1911", + "source_location": "L1917", "weight": 1.0 }, { @@ -226828,7 +226906,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1923", + "source_location": "L1929", "weight": 1.0 }, { @@ -226838,7 +226916,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1924", + "source_location": "L1930", "weight": 1.0 }, { @@ -226848,7 +226926,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1925", + "source_location": "L1931", "weight": 1.0 }, { @@ -226858,7 +226936,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1926", + "source_location": "L1932", "weight": 1.0 }, { @@ -226868,7 +226946,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1928", + "source_location": "L1934", "weight": 1.0 }, { @@ -226878,7 +226956,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1928", + "source_location": "L1934", "weight": 1.0 }, { @@ -226888,7 +226966,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1940", + "source_location": "L1946", "weight": 1.0 }, { @@ -226898,7 +226976,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1941", + "source_location": "L1947", "weight": 1.0 }, { @@ -226908,7 +226986,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1942", + "source_location": "L1948", "weight": 1.0 }, { @@ -226918,7 +226996,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1943", + "source_location": "L1949", "weight": 1.0 }, { @@ -226928,7 +227006,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1945", + "source_location": "L1951", "weight": 1.0 }, { @@ -226938,7 +227016,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/qc.py", - "source_location": "L1945", + "source_location": "L1951", "weight": 1.0 }, { diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 854e3e4e..f318493c 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,11 +1,11 @@ -# Graph Report - app (2026-06-18) +# Graph Report - app (2026-06-22) ## Corpus Check -- Large corpus: 208 files · ~245,309 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. +- Large corpus: 208 files · ~245,319 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. ## Summary -- 4205 nodes · 22128 edges · 55 communities detected -- Extraction: 33% EXTRACTED · 67% INFERRED · 0% AMBIGUOUS · INFERRED: 14916 edges (avg confidence: 0.6) +- 4208 nodes · 22135 edges · 52 communities detected +- Extraction: 33% EXTRACTED · 67% INFERRED · 0% AMBIGUOUS · INFERRED: 14919 edges (avg confidence: 0.6) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) @@ -55,15 +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]] ## God Nodes (most connected - your core abstractions) 1. `success_response()` - 648 edges @@ -82,270 +79,258 @@ core/api_request_log_middleware.py → models/models.py - `get_menu_list()` --calls--> `success_response()` [INFERRED] api/menu.py → core/response.py +- `list_my_qc_material_usages()` --calls--> `strip_row_fields()` [INFERRED] + api/qc.py → core/menu_guard.py - `保留匹配节点及其全部上级,供关键词检索后仍能正确组树。` --uses--> `SysDept` [INFERRED] crud/dept.py → models/models.py - `物品单位 CRUD(biz_item_unit)` --uses--> `BizItemUnit` [INFERRED] crud/item_unit.py → models/models.py -- `快递公司 CRUD(biz_express_company)` --uses--> `BizExpressCompany` [INFERRED] - crud/express_company.py → models/models.py ## Communities ### Community 0 - "Community 0" Cohesion: 0.01 -Nodes (821): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+813 more) +Nodes (827): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+819 more) ### Community 1 - "Community 1" Cohesion: 0.01 -Nodes (563): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+555 more) +Nodes (586): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+578 more) ### Community 2 - "Community 2" Cohesion: 0.08 -Nodes (357): 环境检测 — 检测项维护 + 登记管理 API, 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), AccessLogCreateBody, AccessLogUpdateBody, CleanRoomCreateBody, CleanRoomUpdateBody, ExhibitionAppointmentCreateBody, ExhibitionAppointmentUpdateBody (+349 more) +Nodes (363): 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), AccessLogCreateBody, AccessLogUpdateBody, CleanRoomCreateBody, CleanRoomUpdateBody, ExhibitionAppointmentCreateBody, ExhibitionAppointmentUpdateBody, OccupancyCreateBody (+355 more) ### Community 3 - "Community 3" Cohesion: 0.01 -Nodes (282): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+274 more) +Nodes (309): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+301 more) ### Community 4 - "Community 4" -Cohesion: 0.02 -Nodes (252): list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), _resolve_user_role_scopes(), format_date(), optional_date(), parse_date() (+244 more) +Cohesion: 0.01 +Nodes (298): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, create_collection_region(), CustomerCreateBody, CustomerUpdateBody, delete_cell_sample_type() (+290 more) ### Community 5 - "Community 5" -Cohesion: 0.02 -Nodes (223): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), _format_attachment_file_size(), urls_to_attachment_list() (+215 more) +Cohesion: 0.09 +Nodes (211): AuditCreateBody, BatchDetailIdsBody, BatchRefundFinanceSubmitBody, FinanceConfirmBody, FullmoonTodoInsuranceBody, InvoiceRequestCompleteBody, InvoiceRequestCreateBody, PaymentDetailDraftBody (+203 more) ### Community 6 - "Community 6" -Cohesion: 0.08 -Nodes (233): AuditCreateBody, BatchDetailIdsBody, BatchRefundFinanceSubmitBody, FinanceConfirmBody, FullmoonTodoInsuranceBody, InvoiceRequestCompleteBody, InvoiceRequestCreateBody, PaymentDetailDraftBody (+225 more) +Cohesion: 0.02 +Nodes (189): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), batch_review(), _dec() (+181 more) ### Community 7 - "Community 7" Cohesion: 0.03 -Nodes (162): batch_discard(), batch_options(), _batch_row_to_dict(), batch_stock_in(), batch_stock_out(), _create_batch_and_usage(), delete_batch(), _discard_batch() (+154 more) +Nodes (160): batch_discard(), batch_options(), _batch_row_to_dict(), batch_stock_in(), batch_stock_out(), _create_batch_and_usage(), delete_batch(), _discard_batch() (+152 more) ### Community 8 - "Community 8" Cohesion: 0.02 -Nodes (146): auto_create_payment(), get_protocol_nos_used_in_protocols(), create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), 字典类型 CRUD(sys_dict_type), _row_to_dict() (+138 more) +Nodes (153): map_payments_by_schedule_ids(), get_protocol_nos_used_in_protocols(), create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), 字典类型 CRUD(sys_dict_type), _row_to_dict() (+145 more) ### Community 9 - "Community 9" Cohesion: 0.02 -Nodes (96): get_designer_data(), _error_json(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError (+88 more) +Nodes (94): get_designer_data(), _error_json(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError (+86 more) ### Community 10 - "Community 10" -Cohesion: 0.03 -Nodes (94): _avatar_url_field(), _build_current_user_payload(), _build_user_info_payload(), get_current_user_profile(), _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致) (+86 more) +Cohesion: 0.04 +Nodes (97): urls_to_attachment_list(), _apply_qc_status_filter(), _base_query(), _derive_qc_conclusion(), _ensure_notification(), _eq_ci(), _fetch_completed_tasks(), _fmt_dt() (+89 more) ### Community 11 - "Community 11" -Cohesion: 0.04 -Nodes (83): _fmt_dt(), get_handover_by_schedule(), get_outbound_handover(), get_outbound_handover_view(), _handover_row_to_dict(), _handover_view_dict(), _parse_handover_time(), 供输注计划 detail 聚合的交接只读信息。 (+75 more) +Cohesion: 0.05 +Nodes (66): _jwt_user_payload(), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录:账号为 sys_user.user_no,密码为 sys_user.password(bcrypt)。, refresh_token(), web_login(), web_login_rsa_public_key(), lifespan(), create_access_token() (+58 more) ### Community 12 - "Community 12" -Cohesion: 0.36 -Nodes (67): BatchStockInBody, BatchStockInItem, BatchStockOutBody, BatchStockOutItem, ConsumableCreateBody, ConsumablePackCreateBody, ConsumablePackUpdateBody, ConsumableUpdateBody (+59 more) - -### Community 13 - "Community 13" Cohesion: 0.06 Nodes (67): 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() (+59 more) -### Community 14 - "Community 14" -Cohesion: 0.08 -Nodes (56): batch_delete_research_donations(), change_donation_status(), convert_from_storage(), convert_to_storage(), create_research_donation(), delete_research_donation(), _get_current_user_id(), get_research_donation_detail() (+48 more) +### Community 13 - "Community 13" +Cohesion: 0.06 +Nodes (56): generate_id(), optional_date(), parse_date(), 将字符串 / date / datetime 转为 date 或 None, camel_to_snake(), get_model_attr(), HistoryCRUD, allocate_next_biz_no() (+48 more) -### Community 15 - "Community 15" +### Community 14 - "Community 14" Cohesion: 0.11 Nodes (35): 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() (+27 more) +### Community 15 - "Community 15" +Cohesion: 0.1 +Nodes (36): batch_create_slots(), clear_slots_by_facility_node(), collect_descendant_ids(), create_facility(), create_slot(), get_children(), get_facility(), get_slot() (+28 more) + ### Community 16 - "Community 16" Cohesion: 0.12 Nodes (11): get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.ht, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total, 申请退款 Args: out_trade_no: 商户订单号 total_amount, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 tot, 生成签名 V3 (SHA256 with RSA) (+3 more) ### Community 17 - "Community 17" +Cohesion: 0.19 +Nodes (27): _amount_for_row(), _batch_map(), deduct_for_task(), _deduct_task_usage_legacy_batch(), _display_remark(), _fmt_date_val(), _linked_qc_task_no_map(), list_linked_task_usages() (+19 more) + +### Community 18 - "Community 18" Cohesion: 0.15 Nodes (20): _access_log_to_dict(), _calc_duration_minutes(), create_access_log(), create_clean_room(), create_uv_disinfect_log(), get_access_log(), get_clean_room(), get_uv_disinfect_log() (+12 more) -### Community 18 - "Community 18" -Cohesion: 0.2 -Nodes (19): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), get_my_usages(), _is_enabled_status() (+11 more) - ### Community 19 - "Community 19" -Cohesion: 0.18 -Nodes (18): company_code_exists(), create_company(), get_company(), list_companies(), list_company_options(), _row_to_dict(), soft_delete_company(), update_company() (+10 more) +Cohesion: 0.17 +Nodes (12): BusinessException, InvalidStatusTransitionException, log_delivery_operation(), log_operation(), log_order_operation(), log_settlement_operation(), log_user_operation(), OrderLockedException (+4 more) ### Community 20 - "Community 20" Cohesion: 0.2 -Nodes (14): add_days_yyyymmdd(), add_interval_months_yyyymmdd(), add_months_yyyymmdd(), calc_fq_installment_due_date(), calc_installment_due_amounts_by_ratios(), _calc_installment_due_amounts_inline(), calc_unpaid_amounts_by_ratios(), is_legacy_installment_ratios() (+6 more) +Nodes (19): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), get_my_usages(), _is_enabled_status() (+11 more) ### Community 21 - "Community 21" Cohesion: 0.24 Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import Wech, 发送模板消息 Args: openid: 用户openid templ, send_delivery_notice(), send_delivery_warning(), send_order_status(), send_payment_success(), send_refund_result(), send_urge_notification() (+1 more) ### Community 22 - "Community 22" +Cohesion: 0.23 +Nodes (12): Config, ProductBase, ProductCategoryBase, ProductCategoryCreate, ProductCategoryResponse, ProductCreate, ProductResponse, ProductUnitBase (+4 more) + +### Community 23 - "Community 23" Cohesion: 0.31 Nodes (11): create_equipment(), _dec(), equipment_code_exists(), equipment_is_referenced(), get_equipment(), list_equipments(), _norm_status(), _parse_date() (+3 more) -### Community 23 - "Community 23" +### Community 24 - "Community 24" +Cohesion: 0.27 +Nodes (11): create_consumable_pack(), get_consumable_pack(), get_pack_detail(), _item_row_to_dict(), list_all_packs(), list_consumable_packs(), pack_code_exists(), 耗材包 CRUD(biz_consumable_pack + biz_consumable_pack_item) (+3 more) + +### Community 25 - "Community 25" 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) -### Community 24 - "Community 24" +### Community 26 - "Community 26" Cohesion: 0.24 Nodes (11): deduct_for_step(), _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), 试剂变动记录 CRUD(biz_reagent_stock_log), 撤销步骤此前 step_save 扣减,便于重新填报。, 扣减试剂库存并生成变动记录。调用方控制事务,本函数不 commit。, _resolve_receiver_purpose() (+3 more) -### Community 25 - "Community 25" +### Community 27 - "Community 27" 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 26 - "Community 26" +### Community 28 - "Community 28" Cohesion: 0.24 Nodes (11): deduct_for_step(), _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), 耗材变动记录 CRUD(biz_consumable_stock_log), 撤销步骤此前 step_save 扣减,便于重新填报。, 扣减耗材库存并生成变动记录。调用方控制事务,本函数不 commit。, _resolve_receiver_purpose() (+3 more) -### Community 27 - "Community 27" +### Community 29 - "Community 29" Cohesion: 0.27 Nodes (11): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), 保留匹配节点及其全部上级,供关键词检索后仍能正确组树。 (+3 more) -### Community 28 - "Community 28" +### Community 30 - "Community 30" 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) -### Community 29 - "Community 29" -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 30 - "Community 30" +### Community 31 - "Community 31" 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 31 - "Community 31" +### Community 32 - "Community 32" 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 32 - "Community 32" -Cohesion: 0.27 -Nodes (8): create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options(), 字典数据 CRUD(sys_dict_data), _row_to_dict(), soft_delete_dict_data(), update_dict_data() - ### Community 33 - "Community 33" 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 34 - "Community 34" 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() +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 35 - "Community 35" 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() +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 36 - "Community 36" Cohesion: 0.31 -Nodes (8): 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() +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 37 - "Community 37" -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() +Cohesion: 0.22 +Nodes (8): 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 运营端角色守卫:admin / super_admin 可访问。, 接口菜单权限守卫(已统一放行 menuCode 校验,仅保留运营端登录)。, 接口菜单权限守卫(已统一放行 menuCode 校验,仅保留运营端登录)。, require_admin_or_super_admin(), require_any_menu_code(), require_menu_code(), strip_row_fields() ### Community 38 - "Community 38" Cohesion: 0.36 -Nodes (7): create_post(), get_post(), list_posts(), post_code_exists(), _row_to_dict(), soft_delete_post(), update_post() - -### Community 39 - "Community 39" -Cohesion: 0.36 Nodes (7): create_tenant(), get_tenant(), list_tenants(), _row_to_dict(), soft_delete_tenant(), tenant_no_exists(), update_tenant() -### Community 40 - "Community 40" -Cohesion: 0.36 -Nodes (7): create_site(), get_site(), list_sites(), _row_to_dict(), site_code_exists(), soft_delete_site(), update_site() - -### Community 41 - "Community 41" -Cohesion: 0.25 -Nodes (7): 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 运营端角色守卫:admin / super_admin 可访问。, 接口菜单权限守卫。super_admin 直接放行。, 接口菜单权限守卫:拥有任一 menuCode 即可访问。super_admin 直接放行。, require_admin_or_super_admin(), require_any_menu_code(), require_menu_code() - -### Community 42 - "Community 42" +### Community 39 - "Community 39" Cohesion: 0.29 Nodes (2): BaseModel, SoftDeleteModel -### Community 43 - "Community 43" +### Community 40 - "Community 40" Cohesion: 0.38 Nodes (6): derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal() -### Community 44 - "Community 44" +### Community 41 - "Community 41" Cohesion: 0.5 Nodes (3): BaseSettings, Config, Settings -### Community 45 - "Community 45" +### Community 42 - "Community 42" Cohesion: 0.5 Nodes (2): _auto_fill_create_dept_id(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID -### Community 46 - "Community 46" +### Community 43 - "Community 43" Cohesion: 0.67 Nodes (2): get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组) -### Community 47 - "Community 47" +### Community 44 - "Community 44" Cohesion: 1.0 Nodes (1): 请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传 -### Community 48 - "Community 48" +### Community 45 - "Community 45" Cohesion: 1.0 Nodes (1): API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位) -### Community 51 - "Community 51" +### Community 48 - "Community 48" Cohesion: 1.0 Nodes (1): 发送订单状态通知 Args: openid: 用户openid ord -### Community 52 - "Community 52" +### Community 49 - "Community 49" Cohesion: 1.0 Nodes (1): 发送支付成功通知 Args: openid: 用户openid ord -### Community 53 - "Community 53" +### Community 50 - "Community 50" Cohesion: 1.0 Nodes (1): 发送配送通知 Args: openid: 配送员openid task -### Community 54 - "Community 54" +### Community 51 - "Community 51" Cohesion: 1.0 Nodes (1): 发送配送时效预警 Args: openid: 配送员openid ta -### Community 55 - "Community 55" +### Community 52 - "Community 52" Cohesion: 1.0 Nodes (1): 发送退款结果通知 Args: openid: 用户openid ord -### Community 56 - "Community 56" +### Community 53 - "Community 53" Cohesion: 1.0 Nodes (1): 发送催单通知给配送员 Args: deliver_openid: 配送员openid ## Knowledge Gaps -- **127 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。` (+122 more) +- **128 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。` (+123 more) These have ≤1 connection - possible missing edges or undocumented components. -- **Thin community `Community 42`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()` +- **Thin community `Community 39`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 45`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID` +- **Thin community `Community 42`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 46`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)` +- **Thin community `Community 43`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 47`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传` +- **Thin community `Community 44`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 48`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)` +- **Thin community `Community 45`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 51`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord` +- **Thin community `Community 48`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 52`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord` +- **Thin community `Community 49`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 53`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task` +- **Thin community `Community 50`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 54`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta` +- **Thin community `Community 51`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 55`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord` +- **Thin community `Community 52`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 56`** (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 `SysUser` connect `Community 1` to `Community 2`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 14`, `Community 24`, `Community 26`?** - _High betweenness centrality (0.104) - this node is a cross-community bridge._ -- **Why does `generate_uuid()` connect `Community 3` to `Community 0`, `Community 1`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 17`, `Community 18`, `Community 19`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`, `Community 38`, `Community 39`, `Community 40`?** - _High betweenness centrality (0.080) - this node is a cross-community bridge._ -- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 4`, `Community 9`, `Community 10`, `Community 13`, `Community 46`, `Community 14`?** - _High betweenness centrality (0.068) - this node is a cross-community bridge._ +- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 11`, `Community 26`, `Community 28`?** + _High betweenness centrality (0.111) - this node is a cross-community bridge._ +- **Why does `generate_uuid()` connect `Community 3` to `Community 0`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 17`, `Community 18`, `Community 20`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 38`?** + _High betweenness centrality (0.063) - this node is a cross-community bridge._ +- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 4`, `Community 9`, `Community 11`, `Community 43`, `Community 12`?** + _High betweenness centrality (0.063) - this node is a cross-community bridge._ - **Are the 700 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?** _`str` has 700 INFERRED edges - model-reasoned connections that need verification._ - **Are the 647 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?** diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 8ea1a2cf..219fc3c4 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -57,12 +57,12 @@
-
4205 nodes · 22128 edges · 61 communities
+
4208 nodes · 22135 edges · 58 communities