From a79aee26146271e43a7bd5bce0db6abb4bee4100 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 14 Jun 2026 09:14:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.env.example | 4 +- backend/app.pid | 2 +- backend/app/api/public.py | 9 +- backend/app/core/config.py | 4 +- ...231f448020f96ccd1d97a033c1b3470b61cb0.json | 1 + ...250fc101fc7bbe9a60a09f3e5a886d9045001.json | 1 + ...1c8135cf19696a2b65b6b4a749c5edee39319.json | 1 + ...ec18820c320cf1cbce6ba78876109cd110f86.json | 1 + backend/app/services/web_auth_roles.py | 23 +- backend/graphify-out/.graphify_analysis.json | 2390 ++++---- backend/graphify-out/.graphify_extract.json | 642 ++- backend/graphify-out/GRAPH_REPORT.md | 154 +- backend/graphify-out/graph.html | 8 +- backend/graphify-out/graph.json | 4388 ++++++++------- backend/graphify-out/manifest.json | 8 +- backend/scripts/seed_clean_rooms.py | 272 + backend/scripts/seed_express_companies.py | 55 + backend/scripts/seed_item_units.py | 232 + .../mockups/ui-richness-L1-console-plain.html | 45 + docs/mockups/ui-richness-L1-detail-plain.html | 92 + docs/mockups/ui-richness-L1-list-plain.html | 89 + .../mockups/ui-richness-L2-list-moderate.html | 148 + docs/mockups/ui-richness-L3-console-rich.html | 144 + docs/mockups/ui-richness-L3-detail-rich.html | 116 + docs/mockups/ui-richness-L3-list-rich.html | 230 + docs/mockups/ui-richness-P01-empty-state.html | 46 + docs/mockups/ui-richness-P02-card-grid.html | 70 + docs/mockups/ui-richness-P03-timeline.html | 66 + docs/mockups/ui-richness-P04-kanban.html | 62 + .../ui-richness-P05-form-sections.html | 69 + .../ui-richness-P06-product-media.html | 54 + docs/mockups/ui-richness-P07-tree-split.html | 64 + .../ui-richness-P08-workflow-steps.html | 49 + .../mockups/ui-richness-P09-side-by-side.html | 65 + docs/mockups/ui-richness-index.html | 291 + docs/mockups/ui-richness-shared.css | 862 +++ docs/sql/menu_restructuring_fix.sql | 92 - docs/sql/seed_clean_rooms.sql | 78 + docs/sql/seed_express_companies.sql | 14 + docs/sql/seed_item_units.sql | 183 + docs/sql/sys_menu_web_init.sql | 101 - docs/sql/zkxw.sql | 4993 ++--------------- .../graphify-out/.graphify_analysis.json | 1653 +++--- web-admin/graphify-out/.graphify_extract.json | 317 +- web-admin/graphify-out/GRAPH_REPORT.md | 194 +- web-admin/graphify-out/graph.html | 8 +- web-admin/graphify-out/manifest.json | 14 +- web-admin/src/App.vue | 3 + ...5165537ff492e689adaa74972181c9d96ce14.json | 1 + ...9fc95de19635a3a784e04ca899e9856597f11.json | 1 + ...224ee07dece305ae9d0ac2109cfe9ed82452d.json | 1 + ...999a7d4c1b3a7229221e00d2c2643cd1986d1.json | 1 + ...059325fc57a91324a9d1dc26774d579786a21.json | 1 + ...b352dd979e4363231bc7c371ae72cf694d9d3.json | 1 + ...d055f6bbb7174e9c50b3897cd7e1bd3e0c415.json | 1 + ...0d95e7ab3c93b3e535ca7c88136e315748598.json | 1 + web-admin/src/router/core/MenuProcessor.ts | 12 +- web-admin/src/router/guards/beforeEach.ts | 7 +- web-admin/src/store/modules/user.ts | 8 +- .../src/views/operations/clean-room/index.vue | 4 +- web-admin/src/views/system/user/index.vue | 122 +- 61 files changed, 9220 insertions(+), 9348 deletions(-) create mode 100644 backend/app/graphify-out/cache/ast/3d5b3e83de4cebbace7ee030e31231f448020f96ccd1d97a033c1b3470b61cb0.json create mode 100644 backend/app/graphify-out/cache/ast/4b5f355a6610cb2e2a86d289760250fc101fc7bbe9a60a09f3e5a886d9045001.json create mode 100644 backend/app/graphify-out/cache/ast/7b97d0167dfaaed9f33f447108f1c8135cf19696a2b65b6b4a749c5edee39319.json create mode 100644 backend/app/graphify-out/cache/ast/7fd3c8e22945421f48d3680ecdeec18820c320cf1cbce6ba78876109cd110f86.json create mode 100644 backend/scripts/seed_clean_rooms.py create mode 100644 backend/scripts/seed_express_companies.py create mode 100644 backend/scripts/seed_item_units.py create mode 100644 docs/mockups/ui-richness-L1-console-plain.html create mode 100644 docs/mockups/ui-richness-L1-detail-plain.html create mode 100644 docs/mockups/ui-richness-L1-list-plain.html create mode 100644 docs/mockups/ui-richness-L2-list-moderate.html create mode 100644 docs/mockups/ui-richness-L3-console-rich.html create mode 100644 docs/mockups/ui-richness-L3-detail-rich.html create mode 100644 docs/mockups/ui-richness-L3-list-rich.html create mode 100644 docs/mockups/ui-richness-P01-empty-state.html create mode 100644 docs/mockups/ui-richness-P02-card-grid.html create mode 100644 docs/mockups/ui-richness-P03-timeline.html create mode 100644 docs/mockups/ui-richness-P04-kanban.html create mode 100644 docs/mockups/ui-richness-P05-form-sections.html create mode 100644 docs/mockups/ui-richness-P06-product-media.html create mode 100644 docs/mockups/ui-richness-P07-tree-split.html create mode 100644 docs/mockups/ui-richness-P08-workflow-steps.html create mode 100644 docs/mockups/ui-richness-P09-side-by-side.html create mode 100644 docs/mockups/ui-richness-index.html create mode 100644 docs/mockups/ui-richness-shared.css delete mode 100644 docs/sql/menu_restructuring_fix.sql create mode 100644 docs/sql/seed_clean_rooms.sql create mode 100644 docs/sql/seed_express_companies.sql create mode 100644 docs/sql/seed_item_units.sql delete mode 100644 docs/sql/sys_menu_web_init.sql create mode 100644 web-admin/src/graphify-out/cache/ast/0810130291aeab95b6e657c57ab5165537ff492e689adaa74972181c9d96ce14.json create mode 100644 web-admin/src/graphify-out/cache/ast/4b1110f0a25b0626ea8a9aeb1c69fc95de19635a3a784e04ca899e9856597f11.json create mode 100644 web-admin/src/graphify-out/cache/ast/51995faee7094b2c2352147e007224ee07dece305ae9d0ac2109cfe9ed82452d.json create mode 100644 web-admin/src/graphify-out/cache/ast/655e88398217081e165f6111cd7999a7d4c1b3a7229221e00d2c2643cd1986d1.json create mode 100644 web-admin/src/graphify-out/cache/ast/a80679ad30ccb084eb849e09041059325fc57a91324a9d1dc26774d579786a21.json create mode 100644 web-admin/src/graphify-out/cache/ast/c017fc03724b03896fe754c1d98b352dd979e4363231bc7c371ae72cf694d9d3.json create mode 100644 web-admin/src/graphify-out/cache/ast/df56c52b87bd9ee2de0516d5729d055f6bbb7174e9c50b3897cd7e1bd3e0c415.json create mode 100644 web-admin/src/graphify-out/cache/ast/e1fd0ec11f6621e1e1148111b310d95e7ab3c93b3e535ca7c88136e315748598.json diff --git a/backend/.env.example b/backend/.env.example index 338401f9..7ba74b89 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -4,8 +4,8 @@ DATABASE_URL=mysql+pymysql://root:password@localhost:3306/zkxw # 与 sys_user.tenant_no 一致;登录按 (tenant_no, user_no) 查用户 # DEFAULT_TENANT_NO=zkxw -# 用户无 sys_user_role 记录时,Web 管理端 JWT 使用的默认角色(super_admin 可全量菜单) -# WEB_AUTH_DEFAULT_ROLE=super_admin +# 已废弃:无角色用户不可登录,JWT role 固定为 guest(勿设为 super_admin) +# WEB_AUTH_DEFAULT_ROLE=guest # JWT配置示例 # SECRET_KEY=your-secret-key-change-in-production diff --git a/backend/app.pid b/backend/app.pid index 32ed7b02..6b13df5e 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -41962 +86521 diff --git a/backend/app/api/public.py b/backend/app/api/public.py index dbc06bdd..818ecda9 100644 --- a/backend/app/api/public.py +++ b/backend/app/api/public.py @@ -29,7 +29,11 @@ from app.models.models import SysUser 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 iter_user_menu_perm_codes, resolve_web_role_for_user +from app.services.web_auth_roles import ( + iter_user_menu_perm_codes, + resolve_web_role_for_user, + user_has_active_roles, +) from app.schemas.auth import ProfileUpdateRequest from app.crud.user import update_user, change_password @@ -134,6 +138,9 @@ async def web_login( if user.status != "1": return error_response(403, "账号已被停用,请联系管理员") + if not user_has_active_roles(db, user.id): + return error_response(403, "账号未分配角色,请联系管理员") + web_role = resolve_web_role_for_user(db, user.id) session_id = generate_uuid() diff --git a/backend/app/core/config.py b/backend/app/core/config.py index a6cb9911..e519475b 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -102,8 +102,8 @@ class Settings(BaseSettings): # 与 docs/sql/zkxw.sql 基线一致:登录按租户 + sys_user.user_no DEFAULT_TENANT_NO: str = "zkxw" - # 用户未绑定 sys_user_role 时,Web 管理端默认角色(建议 super_admin 便于开发全菜单) - WEB_AUTH_DEFAULT_ROLE: str = "super_admin" + # 已废弃:无角色用户固定为 guest,不可通过环境变量提升为 super_admin + WEB_AUTH_DEFAULT_ROLE: str = "guest" # 登录 RSA:私钥 PEM(多实例/负载均衡须配置同一私钥;留空则进程启动时临时生成,仅适合单机开发) LOGIN_RSA_PRIVATE_KEY_PEM: str = "" diff --git a/backend/app/graphify-out/cache/ast/3d5b3e83de4cebbace7ee030e31231f448020f96ccd1d97a033c1b3470b61cb0.json b/backend/app/graphify-out/cache/ast/3d5b3e83de4cebbace7ee030e31231f448020f96ccd1d97a033c1b3470b61cb0.json new file mode 100644 index 00000000..ce59a23b --- /dev/null +++ b/backend/app/graphify-out/cache/ast/3d5b3e83de4cebbace7ee030e31231f448020f96ccd1d97a033c1b3470b61cb0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "label": "public.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L1"}, {"id": "api_public_avatar_url_field", "label": "_avatar_url_field()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L43"}, {"id": "api_public_build_user_info_payload", "label": "_build_user_info_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L52"}, {"id": "api_public_build_current_user_payload", "label": "_build_current_user_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L70"}, {"id": "api_public_resolve_current_user_from_request", "label": "_resolve_current_user_from_request()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L92"}, {"id": "api_public_jwt_user_payload", "label": "_jwt_user_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L100"}, {"id": "api_public_web_login_rsa_public_key", "label": "web_login_rsa_public_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L111"}, {"id": "api_public_web_login", "label": "web_login()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L118"}, {"id": "api_public_refresh_token", "label": "refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L179"}, {"id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L241"}, {"id": "api_public_get_current_user_profile", "label": "get_current_user_profile()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L260"}, {"id": "api_public_update_current_user_profile", "label": "update_current_user_profile()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L270"}, {"id": "api_public_change_current_user_password", "label": "change_current_user_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"id": "api_public_upload_current_user_avatar", "label": "upload_current_user_avatar()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L338"}, {"id": "api_public_get_web_auth_menu_codes", "label": "get_web_auth_menu_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L375"}, {"id": "api_public_rationale_1", "label": "\u516c\u5171\u63a5\u53e3\uff08Web \u767b\u5f55\u3001\u5237\u65b0 Token\u3001\u767b\u51fa\uff1b\u7528\u6237\u6a21\u578b\u5bf9\u9f50 docs/sql/zkxw.sql \u57fa\u7ebf\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L1"}, {"id": "api_public_rationale_44", "label": "\u8fd4\u56de\u5e93\u4e2d\u539f\u59cb\u5934\u50cf\u8def\u5f84\uff0c\u7531\u524d\u7aef\u6309 VITE_MINIO_BASE_URL \u62fc\u5c55\u793a URL\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L44"}, {"id": "api_public_rationale_53", "label": "\u4e0e web-admin `userInfo` \u5b57\u6bb5\u7ea6\u5b9a\u4e00\u81f4\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L53"}, {"id": "api_public_rationale_71", "label": "\u7ec4\u88c5 current-user \u63a5\u53e3\u54cd\u5e94\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L71"}, {"id": "api_public_rationale_112", "label": "Web \u7aef\u767b\u5f55\u7528 RSA \u516c\u94a5\uff08PKCS#1 v1.5\uff0c\u4e0e JSEncrypt \u4e00\u81f4\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L112"}, {"id": "api_public_rationale_123", "label": "Web \u7aef\u767b\u5f55\uff1a\u8d26\u53f7\u4e3a sys_user.user_no\uff0c\u5bc6\u7801\u4e3a sys_user.password\uff08bcrypt\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L123"}, {"id": "api_public_rationale_242", "label": "\u767b\u51fa\uff1a\u540a\u9500 Redis \u4f1a\u8bdd\uff08\u82e5\u5df2\u914d\u7f6e REDIS_HOST\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L242"}, {"id": "api_public_rationale_261", "label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237\u4fe1\u606f\uff08\u4e0e sys_user \u5b57\u6bb5\u5bf9\u5e94\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L261"}, {"id": "api_public_rationale_275", "label": "\u5f53\u524d\u7528\u6237\u66f4\u65b0\u4e2a\u4eba\u4fe1\u606f\uff08\u624b\u673a\u53f7\u3001\u90ae\u7bb1\u3001\u6027\u522b\u3001\u5907\u6ce8\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L275"}, {"id": "api_public_rationale_343", "label": "\u5f53\u524d\u7528\u6237\u4e0a\u4f20\u5934\u50cf\uff08\u4ec5\u56fe\u7247\uff0c\u6700\u5927 2MB\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L343"}, {"id": "api_public_rationale_376", "label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237\u83dc\u5355\u6743\u9650\u6807\u8bc6\uff08sys_menu.perms\uff0c\u7ecf\u89d2\u8272\u7ee7\u627f\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L376"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "sqlalchemy_exc", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_storage", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_avatar_url", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_core", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_schemas_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_avatar_url_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_build_user_info_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_build_current_user_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L70", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_resolve_current_user_from_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L92", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_jwt_user_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_web_login_rsa_public_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_web_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L118", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_logout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_get_current_user_profile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L260", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_update_current_user_profile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L270", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_change_current_user_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_upload_current_user_avatar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "target": "api_public_get_web_auth_menu_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L375", "weight": 1.0}, {"source": "api_public_build_user_info_payload", "target": "api_public_avatar_url_field", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L66", "weight": 1.0}, {"source": "api_public_web_login", "target": "api_public_jwt_user_payload", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L151", "weight": 1.0}, {"source": "api_public_web_login", "target": "api_public_build_user_info_payload", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L173", "weight": 1.0}, {"source": "api_public_refresh_token", "target": "api_public_jwt_user_payload", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L213", "weight": 1.0}, {"source": "api_public_get_current_user_profile", "target": "api_public_resolve_current_user_from_request", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L263", "weight": 1.0}, {"source": "api_public_get_current_user_profile", "target": "api_public_build_current_user_payload", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L264", "weight": 1.0}, {"source": "api_public_update_current_user_profile", "target": "api_public_resolve_current_user_from_request", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L277", "weight": 1.0}, {"source": "api_public_update_current_user_profile", "target": "api_public_build_user_info_payload", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L298", "weight": 1.0}, {"source": "api_public_change_current_user_password", "target": "api_public_resolve_current_user_from_request", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L313", "weight": 1.0}, {"source": "api_public_upload_current_user_avatar", "target": "api_public_resolve_current_user_from_request", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L345", "weight": 1.0}, {"source": "api_public_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_api_public_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L1", "weight": 1.0}, {"source": "api_public_rationale_44", "target": "api_public_avatar_url_field", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L44", "weight": 1.0}, {"source": "api_public_rationale_53", "target": "api_public_build_user_info_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L53", "weight": 1.0}, {"source": "api_public_rationale_71", "target": "api_public_build_current_user_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L71", "weight": 1.0}, {"source": "api_public_rationale_112", "target": "api_public_web_login_rsa_public_key", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L112", "weight": 1.0}, {"source": "api_public_rationale_123", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L123", "weight": 1.0}, {"source": "api_public_rationale_242", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L242", "weight": 1.0}, {"source": "api_public_rationale_261", "target": "api_public_get_current_user_profile", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L261", "weight": 1.0}, {"source": "api_public_rationale_275", "target": "api_public_update_current_user_profile", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L275", "weight": 1.0}, {"source": "api_public_rationale_343", "target": "api_public_upload_current_user_avatar", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L343", "weight": 1.0}, {"source": "api_public_rationale_376", "target": "api_public_get_web_auth_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L376", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_public_avatar_url_field", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L45"}, {"caller_nid": "api_public_avatar_url_field", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L48"}, {"caller_nid": "api_public_avatar_url_field", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L48"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L54"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L54"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L60"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L60"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L61"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L62"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L62"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L72"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L73"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L73"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L75"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L76"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L77"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L78"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L79"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L80"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L81"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L82"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L83"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L84"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L87"}, {"caller_nid": "api_public_resolve_current_user_from_request", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L93"}, {"caller_nid": "api_public_resolve_current_user_from_request", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L94"}, {"caller_nid": "api_public_resolve_current_user_from_request", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L95"}, {"caller_nid": "api_public_resolve_current_user_from_request", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L96"}, {"caller_nid": "api_public_resolve_current_user_from_request", "callee": "get_current_user_by_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L97"}, {"caller_nid": "api_public_web_login_rsa_public_key", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L113"}, {"caller_nid": "api_public_web_login_rsa_public_key", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L114"}, {"caller_nid": "api_public_web_login_rsa_public_key", "callee": "get_public_pem", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L114"}, {"caller_nid": "api_public_web_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L124"}, {"caller_nid": "api_public_web_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L125"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L127"}, {"caller_nid": "api_public_web_login", "callee": "get_by_user_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L129"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L132"}, {"caller_nid": "api_public_web_login", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L134"}, {"caller_nid": "api_public_web_login", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L135"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L136"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L139"}, {"caller_nid": "api_public_web_login", "callee": "user_has_active_roles", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L141"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L142"}, {"caller_nid": "api_public_web_login", "callee": "resolve_web_role_for_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L144"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L146"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L147"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L148"}, {"caller_nid": "api_public_web_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L150"}, {"caller_nid": "api_public_web_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L155"}, {"caller_nid": "api_public_web_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L165"}, {"caller_nid": "api_public_web_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L166"}, {"caller_nid": "api_public_web_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L168"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L181"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L183"}, {"caller_nid": "api_public_refresh_token", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L186"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L187"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L188"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L190"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L191"}, {"caller_nid": "api_public_refresh_token", "callee": "is_session_valid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L193"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L194"}, {"caller_nid": "api_public_refresh_token", "callee": "is_refresh_token_valid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L195"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L196"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L198"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L199"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L202"}, {"caller_nid": "api_public_refresh_token", "callee": "resolve_web_role_for_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L204"}, {"caller_nid": "api_public_refresh_token", "callee": "revoke_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L206"}, {"caller_nid": "api_public_refresh_token", "callee": "extend_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L207"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L209"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L210"}, {"caller_nid": "api_public_refresh_token", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L212"}, {"caller_nid": "api_public_refresh_token", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L217"}, {"caller_nid": "api_public_refresh_token", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L227"}, {"caller_nid": "api_public_refresh_token", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L229"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L237"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L243"}, {"caller_nid": "api_public_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L244"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L245"}, {"caller_nid": "api_public_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L247"}, {"caller_nid": "api_public_logout", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L249"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L250"}, {"caller_nid": "api_public_logout", "callee": "revoke_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L252"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L254"}, {"caller_nid": "api_public_logout", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L256"}, {"caller_nid": "api_public_get_current_user_profile", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L264"}, {"caller_nid": "api_public_get_current_user_profile", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L266"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L278"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L280"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "model_dump", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L282"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "update_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L283"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L286"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L287"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L288"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L289"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L290"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L294"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L296"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "resolve_web_role_for_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L297"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L298"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L300"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L302"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L302"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L314"}, {"caller_nid": "api_public_change_current_user_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L316"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L319"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L319"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L319"}, {"caller_nid": "api_public_change_current_user_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L321"}, {"caller_nid": "api_public_change_current_user_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L322"}, {"caller_nid": "api_public_change_current_user_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L323"}, {"caller_nid": "api_public_change_current_user_password", "callee": "change_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L325"}, {"caller_nid": "api_public_change_current_user_password", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L326"}, {"caller_nid": "api_public_change_current_user_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L328"}, {"caller_nid": "api_public_change_current_user_password", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L330"}, {"caller_nid": "api_public_change_current_user_password", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L330"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L347"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L350"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L352"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "splitext", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L352"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L354"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L356"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L357"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L358"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "read", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L361"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L363"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L364"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L365"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "upload_file", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L367"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "extract_avatar_storage_key", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L368"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L369"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L371"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L371"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L377"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L378"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L379"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L381"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get_current_user_by_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L383"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L384"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L386"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "iter_user_menu_perm_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L395"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L395"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "sorted", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L396"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L400"}, {"caller_nid": "api_public_get_web_auth_menu_codes", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L408"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/4b5f355a6610cb2e2a86d289760250fc101fc7bbe9a60a09f3e5a886d9045001.json b/backend/app/graphify-out/cache/ast/4b5f355a6610cb2e2a86d289760250fc101fc7bbe9a60a09f3e5a886d9045001.json new file mode 100644 index 00000000..d11dd683 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/4b5f355a6610cb2e2a86d289760250fc101fc7bbe9a60a09f3e5a886d9045001.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\u4e00\u7ea7\u83dc\u5355\uff08market\u3001production\u3001quali", "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": "L76"}, {"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": "L80"}, {"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": "L80"}, {"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": "L80"}, {"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": "L80"}, {"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": "L80"}, {"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": "L83"}, {"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": "L91"}, {"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/7b97d0167dfaaed9f33f447108f1c8135cf19696a2b65b6b4a749c5edee39319.json b/backend/app/graphify-out/cache/ast/7b97d0167dfaaed9f33f447108f1c8135cf19696a2b65b6b4a749c5edee39319.json new file mode 100644 index 00000000..8ac91e80 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/7b97d0167dfaaed9f33f447108f1c8135cf19696a2b65b6b4a749c5edee39319.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "label": "storage_facility.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L28"}, {"id": "crud_storage_facility_list_all_facilities", "label": "list_all_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L44"}, {"id": "crud_storage_facility_get_facility", "label": "get_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L67"}, {"id": "crud_storage_facility_get_children", "label": "get_children()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L76"}, {"id": "crud_storage_facility_collect_descendant_ids", "label": "collect_descendant_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L92"}, {"id": "crud_storage_facility_create_facility", "label": "create_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L105"}, {"id": "crud_storage_facility_update_facility", "label": "update_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L149"}, {"id": "crud_storage_facility_soft_delete_facility", "label": "soft_delete_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L207"}, {"id": "crud_storage_facility_slot_to_dict", "label": "_slot_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L233"}, {"id": "crud_storage_facility_list_slots", "label": "list_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L256"}, {"id": "crud_storage_facility_get_slot", "label": "get_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L275"}, {"id": "crud_storage_facility_slot_to_dict_for_row", "label": "_slot_to_dict_for_row()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L284"}, {"id": "crud_storage_facility_create_slot", "label": "create_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L289"}, {"id": "crud_storage_facility_update_slot", "label": "update_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L324"}, {"id": "crud_storage_facility_soft_delete_slot", "label": "soft_delete_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L360"}, {"id": "crud_storage_facility_clear_slots_by_facility_node", "label": "clear_slots_by_facility_node()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L370"}, {"id": "crud_storage_facility_batch_create_slots", "label": "batch_create_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L402"}, {"id": "crud_storage_facility_insert_row_and_shift_slots", "label": "insert_row_and_shift_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L455"}, {"id": "crud_storage_facility_rationale_1", "label": "\u5b58\u50a8\u8bbe\u65bd\uff08\u6811\u7ed3\u6784\uff09+ \u5c0f\u683c CRUD\uff08biz_storage_facility / biz_storage_facility_slot\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_rationale_50", "label": "Return FLAT list of all non-deleted facility nodes (no pagination, no tree build", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L50"}, {"id": "crud_storage_facility_rationale_77", "label": "Direct children of a node.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L77"}, {"id": "crud_storage_facility_rationale_93", "label": "Iteratively collect ALL descendant node IDs (stack-based, no recursion).", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L93"}, {"id": "crud_storage_facility_rationale_208", "label": "Cascade soft-delete: node + all descendants + their slots.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L208"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "re", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "app_services_storage_facility_code", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_list_all_facilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_get_facility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_get_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_collect_descendant_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L92", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_create_facility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_update_facility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_soft_delete_facility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_slot_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L233", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_list_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L256", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_get_slot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L275", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_slot_to_dict_for_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_create_slot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L289", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_update_slot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L324", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_soft_delete_slot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_clear_slots_by_facility_node", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L370", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_batch_create_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L402", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "target": "crud_storage_facility_insert_row_and_shift_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L455", "weight": 1.0}, {"source": "crud_storage_facility_list_all_facilities", "target": "crud_storage_facility_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L64", "weight": 1.0}, {"source": "crud_storage_facility_collect_descendant_ids", "target": "crud_storage_facility_get_children", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L98", "weight": 1.0}, {"source": "crud_storage_facility_update_facility", "target": "crud_storage_facility_get_facility", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L162", "weight": 1.0}, {"source": "crud_storage_facility_soft_delete_facility", "target": "crud_storage_facility_get_facility", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L209", "weight": 1.0}, {"source": "crud_storage_facility_soft_delete_facility", "target": "crud_storage_facility_collect_descendant_ids", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L213", "weight": 1.0}, {"source": "crud_storage_facility_list_slots", "target": "crud_storage_facility_slot_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L272", "weight": 1.0}, {"source": "crud_storage_facility_slot_to_dict_for_row", "target": "crud_storage_facility_slot_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L286", "weight": 1.0}, {"source": "crud_storage_facility_update_slot", "target": "crud_storage_facility_get_slot", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L335", "weight": 1.0}, {"source": "crud_storage_facility_soft_delete_slot", "target": "crud_storage_facility_get_slot", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L361", "weight": 1.0}, {"source": "crud_storage_facility_batch_create_slots", "target": "crud_storage_facility_slot_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L452", "weight": 1.0}, {"source": "crud_storage_facility_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1", "weight": 1.0}, {"source": "crud_storage_facility_rationale_50", "target": "crud_storage_facility_list_all_facilities", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L50", "weight": 1.0}, {"source": "crud_storage_facility_rationale_77", "target": "crud_storage_facility_get_children", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L77", "weight": 1.0}, {"source": "crud_storage_facility_rationale_93", "target": "crud_storage_facility_collect_descendant_ids", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L93", "weight": 1.0}, {"source": "crud_storage_facility_rationale_208", "target": "crud_storage_facility_soft_delete_facility", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L208", "weight": 1.0}], "raw_calls": [{"caller_nid": "crud_storage_facility_row_to_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L39"}, {"caller_nid": "crud_storage_facility_row_to_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L40"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L51"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L51"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L53"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L54"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L57"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "or_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L58"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L59"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L60"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L63"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L63"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L63"}, {"caller_nid": "crud_storage_facility_list_all_facilities", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L63"}, {"caller_nid": "crud_storage_facility_get_facility", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L68"}, {"caller_nid": "crud_storage_facility_get_facility", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L68"}, {"caller_nid": "crud_storage_facility_get_facility", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L69"}, {"caller_nid": "crud_storage_facility_get_facility", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L72"}, {"caller_nid": "crud_storage_facility_get_facility", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L73"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L79"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L79"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L79"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L79"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L81"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L87"}, {"caller_nid": "crud_storage_facility_get_children", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L87"}, {"caller_nid": "crud_storage_facility_collect_descendant_ids", "callee": "pop", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L97"}, {"caller_nid": "crud_storage_facility_collect_descendant_ids", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L100"}, {"caller_nid": "crud_storage_facility_collect_descendant_ids", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L101"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L118"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L120"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "validate_node_code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L121"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "assert_sibling_node_code_unique", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L123"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "BizStorageFacility", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L126"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L127"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L131"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L135"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L138"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L140"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L143"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L144"}, {"caller_nid": "crud_storage_facility_create_facility", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L145"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L164"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L165"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L167"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L169"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "validate_node_code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L172"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "assert_sibling_node_code_unique", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L173"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L182"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L188"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L190"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L191"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L193"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "cascade_refresh_slot_name_snapshots_for_nodes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L195"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L202"}, {"caller_nid": "crud_storage_facility_update_facility", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L203"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L211"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L214"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L216"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L216"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L216"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L217"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L221"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L221"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L221"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L222"}, {"caller_nid": "crud_storage_facility_soft_delete_facility", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L225"}, {"caller_nid": "crud_storage_facility_slot_to_dict", "callee": "build_full_slot_code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L240"}, {"caller_nid": "crud_storage_facility_slot_to_dict", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L247"}, {"caller_nid": "crud_storage_facility_slot_to_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L251"}, {"caller_nid": "crud_storage_facility_slot_to_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L252"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L262"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L262"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L263"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L269"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L270"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L270"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L270"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L270"}, {"caller_nid": "crud_storage_facility_list_slots", "callee": "load_facility_map", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L271"}, {"caller_nid": "crud_storage_facility_get_slot", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L276"}, {"caller_nid": "crud_storage_facility_get_slot", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L276"}, {"caller_nid": "crud_storage_facility_get_slot", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L277"}, {"caller_nid": "crud_storage_facility_get_slot", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L280"}, {"caller_nid": "crud_storage_facility_get_slot", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L281"}, {"caller_nid": "crud_storage_facility_slot_to_dict_for_row", "callee": "load_facility_map", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L285"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L300"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L302"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "BizStorageFacilitySlot", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L303"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L304"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L306"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L307"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L310"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L313"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L315"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L318"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L319"}, {"caller_nid": "crud_storage_facility_create_slot", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L320"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L337"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L338"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L340"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L342"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L346"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L348"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L349"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L351"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "cascade_refresh_slot_name_snapshots_for_slots", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L353"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L355"}, {"caller_nid": "crud_storage_facility_update_slot", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L356"}, {"caller_nid": "crud_storage_facility_soft_delete_slot", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L363"}, {"caller_nid": "crud_storage_facility_soft_delete_slot", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L365"}, {"caller_nid": "crud_storage_facility_soft_delete_slot", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L366"}, {"caller_nid": "crud_storage_facility_soft_delete_slot", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L367"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L377"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L379"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L380"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L380"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L380"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L381"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L388"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L389"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L390"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L390"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L390"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L398"}, {"caller_nid": "crud_storage_facility_clear_slots_by_facility_node", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L399"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L411"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L413"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L415"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L417"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L418"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L418"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L418"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L419"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L422"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L424"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L425"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "range", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L427"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "range", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L428"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "BizStorageFacilitySlot", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L431"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L432"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L446"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L447"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L448"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "load_facility_map", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L449"}, {"caller_nid": "crud_storage_facility_batch_create_slots", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L451"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L464"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L466"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L468"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L470"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L472"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L472"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L472"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L473"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L480"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L482"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "compile", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L484"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L485"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L485"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L485"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L486"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L493"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "match", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L497"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L497"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "groups", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L500"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L501"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L503"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L507"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "range", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L511"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L512"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "BizStorageFacilitySlot", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L513"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L514"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "add_all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L530"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "extend", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L531"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "cascade_refresh_slot_name_snapshots_for_slots", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L533"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L534"}, {"caller_nid": "crud_storage_facility_insert_row_and_shift_slots", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L535"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/7fd3c8e22945421f48d3680ecdeec18820c320cf1cbce6ba78876109cd110f86.json b/backend/app/graphify-out/cache/ast/7fd3c8e22945421f48d3680ecdeec18820c320cf1cbce6ba78876109cd110f86.json new file mode 100644 index 00000000..7b9f193e --- /dev/null +++ b/backend/app/graphify-out/cache/ast/7fd3c8e22945421f48d3680ecdeec18820c320cf1cbce6ba78876109cd110f86.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "label": "config.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L1"}, {"id": "core_config_settings", "label": "Settings", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L7"}, {"id": "basesettings", "label": "BaseSettings", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "core_config_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L145"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "pydantic_settings", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "pathlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "core_config_settings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "core_config_settings", "target": "basesettings", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "core_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L145", "weight": 1.0}], "raw_calls": []} \ 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 b698c4cf..aa4a3aed 100644 --- a/backend/app/services/web_auth_roles.py +++ b/backend/app/services/web_auth_roles.py @@ -9,6 +9,9 @@ from sqlalchemy.orm import Session from app.core.config import settings from app.models.models import SysMenu, SysRole, SysRoleMenu, SysUserRole +# 无 sys_user_role 绑定时的 Web 端角色(不可为 super_admin,避免越权) +NO_ROLE_WEB_ROLE = "guest" + # 一级菜单权限码(用于顶部菜单权限控制) TOP_MENU_PERMS = frozenset({"menu:market", "menu:production", "menu:quality", "menu:operations", "menu:system-manage"}) @@ -25,10 +28,10 @@ def _map_role_name_to_web(role_name: str) -> str: return "admin" -def resolve_web_role_for_user(db: Session, user_id: str) -> str: - """根据用户关联角色解析 Web 端 role(admin / super_admin)。""" +def _active_role_name_rows(db: Session, user_id: str): + """查询用户当前有效的 sys_role.role_name 列表。""" if not user_id: - return settings.WEB_AUTH_DEFAULT_ROLE + return [] tenant = settings.DEFAULT_TENANT_NO rows = ( db.query(SysRole.role_name) @@ -44,9 +47,19 @@ def resolve_web_role_for_user(db: Session, user_id: str) -> str: .order_by(SysRole.create_time.desc()) .all() ) - names = [str(r[0]).strip() for r in rows if r and r[0]] + return [str(r[0]).strip() for r in rows if r and r[0]] + + +def user_has_active_roles(db: Session, user_id: str) -> bool: + """用户是否至少绑定一个有效角色(sys_user_role → sys_role)。""" + return bool(_active_role_name_rows(db, user_id)) + + +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) if not names: - return settings.WEB_AUTH_DEFAULT_ROLE + return NO_ROLE_WEB_ROLE mapped = [_map_role_name_to_web(n) for n in names] if "super_admin" in mapped: return "super_admin" diff --git a/backend/graphify-out/.graphify_analysis.json b/backend/graphify-out/.graphify_analysis.json index 01317950..60f9113c 100644 --- a/backend/graphify-out/.graphify_analysis.json +++ b/backend/graphify-out/.graphify_analysis.json @@ -131,7 +131,6 @@ "api_clinical_payment_py", "api_collection_protocol_create_collection_protocol", "api_collection_protocol_delete_collection_protocol", - "api_collection_protocol_ensure_customer_for_mother", "api_collection_protocol_get_collection_protocol_detail", "api_collection_protocol_get_current_user_id", "api_collection_protocol_get_tenant_no", @@ -204,8 +203,17 @@ "api_leave_submit_leave", "api_leave_update_leave", "api_material_batch_discard_material", + "api_material_batch_discard_material_batches", "api_material_batch_stock_in_material", + "api_material_batch_stock_in_material_batches", "api_material_batch_stock_out_material", + "api_material_batch_stock_out_material_batches", + "api_material_batchdiscardbody", + "api_material_batchdiscarditem", + "api_material_batchstockinbody", + "api_material_batchstockinitem", + "api_material_batchstockoutbody", + "api_material_batchstockoutitem", "api_material_cancel_material_stock_check", "api_material_complete_material_stock_check", "api_material_create_material", @@ -220,9 +228,17 @@ "api_material_list_stock_logs", "api_material_material_batch_options", "api_material_material_options", + "api_material_materialbatchupdatebody", + "api_material_materialbody", + "api_material_materialupdatebody", + "api_material_py", "api_material_rationale_612", "api_material_save_material_stock_check_unused_lines", "api_material_stock_in_material", + "api_material_stockcheckcreatebody", + "api_material_stockcheckunusedlineitem", + "api_material_stockcheckunusedlinesbody", + "api_material_stockinbody", "api_material_update_material", "api_material_update_material_batch", "api_operations_batch_create_storage_slots", @@ -242,12 +258,14 @@ "api_operations_delete_uv_disinfect_log", "api_operations_get_tenant_no", "api_operations_insert_storage_slot_row", + "api_operations_list_access_logs", "api_operations_list_clean_rooms", "api_operations_list_exhibition_appointments", "api_operations_list_occupancies", "api_operations_list_occupancy_history", "api_operations_list_storage_facilities", "api_operations_list_storage_slots", + "api_operations_list_uv_disinfect_logs", "api_operations_normalize_visit_date_bound", "api_operations_parse_optional_dt", "api_operations_py", @@ -295,6 +313,7 @@ "api_pilot_checkup_api_delete_actual_item", "api_pilot_checkup_api_delete_checkup", "api_pilot_checkup_api_delete_reserve_item", + "api_pilot_checkup_api_get_checkup_detail", "api_pilot_checkup_api_list_actual_items", "api_pilot_checkup_api_list_checkups", "api_pilot_checkup_api_list_pending_patients", @@ -306,7 +325,6 @@ "api_pilot_checkup_api_settle_fee", "api_pilot_checkup_get_tenant_no", "api_pilot_checkup_py", - "api_pilot_checkup_rationale_1", "api_pilot_delivery_create_delivery", "api_pilot_delivery_get_by_schedule", "api_pilot_delivery_get_method", @@ -545,7 +563,6 @@ "api_production_replace_task_step_data_collections", "api_production_replace_task_step_outputs", "api_production_replace_task_step_reagents", - "api_production_set_current_process_route", "api_production_set_production_task_inputs", "api_production_set_production_task_outputs", "api_production_update_cell_product", @@ -728,10 +745,7 @@ "core_response_rationale_40", "core_response_success_response", "core_utils_parse_datetime", - "core_wechat_pay_rationale_254", - "core_wechat_pay_wechatpayclient_refund", "crud_base_crudbase_get", - "crud_cell_product_product_to_response", "crud_cleanroom_garment_get_garment_detail", "crud_clinical_payment_apply_submit_receipt", "crud_clinical_payment_auto_create_payment", @@ -754,21 +768,37 @@ "crud_collection_protocol_batch_submit_refund_finance", "crud_collection_protocol_no_enrich_issued_user_names", "crud_collection_protocol_submit_refund_finance", - "crud_collection_region_hospital_names_by_region_ids", - "crud_collection_region_list_collection_regions", + "crud_collection_region_hospital_to_dict", "crud_collection_region_region_to_dict", "crud_exhibition_appointment_total_pages", "crud_leave_update_leave_status", + "crud_material_stock_check_cancel_check", + "crud_material_stock_check_check_header_to_dict", "crud_material_stock_check_complete_check", - "crud_menu_build_tree", - "crud_menu_list_menus_tree", + "crud_material_stock_check_create_check", + "crud_material_stock_check_get_check", + "crud_material_stock_check_get_check_detail", + "crud_material_stock_check_line_counts", + "crud_material_stock_check_list_checks", + "crud_material_stock_check_parse_check_time", + "crud_material_stock_check_parse_optional_date", + "crud_material_stock_check_py", + "crud_material_stock_check_save_unused_lines", + "crud_material_stock_check_status_label", + "crud_material_stock_check_user_nick_name_map", + "crud_pilot_checkup_get_checkup_by_application", "crud_pilot_delivery_save_delivery_materials", "crud_pilot_service_normalize_txn_product_item", "crud_pilot_service_row_to_dict_channel_agreement", + "crud_pilot_service_row_to_dict_channel_agreement_price", + "crud_pilot_service_row_to_dict_channel_invoice", + "crud_pilot_service_row_to_dict_channel_mail_address", + "crud_pilot_service_row_to_dict_checkup_institution", + "crud_pilot_service_row_to_dict_checkup_institution_invoice", + "crud_pilot_service_row_to_dict_checkup_institution_project", + "crud_pilot_service_row_to_dict_project_system_item", "crud_pilot_service_row_to_dict_service_order", "crud_pilot_service_row_to_dict_service_order_txn", - "crud_process_route_list_routes", - "crud_process_route_route_row_to_dict", "crud_process_route_update_step", "crud_production_task_delete_task_step", "crud_production_task_enrich_assignee_names", @@ -782,20 +812,19 @@ "crud_production_task_soft_delete_sub", "crud_production_task_task_to_dict", "crud_production_work_order_configure_temp_production_work_order", - "crud_production_work_order_wo_to_response_dict", "crud_qc_material_batch_stock_in", "crud_qc_material_batch_stock_out", - "crud_qc_material_options_list", "crud_qc_material_rationale_345", "crud_qc_material_rationale_492", "crud_qc_material_stock_batch_batch_discard", + "crud_qc_material_stock_batch_batch_options", "crud_qc_material_stock_batch_batch_row_to_dict", + "crud_qc_material_stock_batch_fmt_date", "crud_qc_material_stock_batch_list_batches", "crud_qc_task_update_task_attachments", "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "crud_research_donation_change_status", "crud_research_donation_donation_to_dict", - "crud_workflow_get_all_tasks_for_business", "schemas_order_adjust_adjuststatus", "schemas_order_adjust_adjusttype", "schemas_order_adjust_py", @@ -861,23 +890,6 @@ "api_insurance_company_insurancecompanyupdatebody", "api_insurance_company_insuranceprojectpricecreatebody", "api_insurance_company_insuranceprojectpriceupdatebody", - "api_material_batch_discard_material_batches", - "api_material_batch_stock_in_material_batches", - "api_material_batch_stock_out_material_batches", - "api_material_batchdiscardbody", - "api_material_batchdiscarditem", - "api_material_batchstockinbody", - "api_material_batchstockinitem", - "api_material_batchstockoutbody", - "api_material_batchstockoutitem", - "api_material_materialbatchupdatebody", - "api_material_materialbody", - "api_material_materialupdatebody", - "api_material_py", - "api_material_stockcheckcreatebody", - "api_material_stockcheckunusedlineitem", - "api_material_stockcheckunusedlinesbody", - "api_material_stockinbody", "api_pilot_application_applicationcreatebody", "api_pilot_application_applicationsavebody", "api_pilot_application_applicationupdatebody", @@ -904,6 +916,7 @@ "api_pilot_checkup_checkupitemssavebody", "api_pilot_checkup_checkupsavebody", "api_pilot_checkup_idbody", + "api_pilot_checkup_rationale_1", "api_pilot_delivery_deliverycreatebody", "api_pilot_delivery_deliverymaterialitem", "api_pilot_delivery_deliverymaterialsavebody", @@ -964,6 +977,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_batchdiscardbody", "api_production_material_batchdiscarditem", "api_production_material_batchstockinbody", @@ -982,6 +1005,24 @@ "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_reagentcreatebody", + "api_production_reagentupdatebody", + "api_production_sopdocumentcreatebody", + "api_production_sopdocumentupdatebody", + "api_production_stockinbody", + "api_production_stockoutbody", "api_qc_batchdiscardbody", "api_qc_batchdiscarditem", "api_qc_batchstockinbody", @@ -1030,7 +1071,9 @@ "api_workflow_processdefcreatebody", "api_workflow_processdefupdatebody", "api_workflow_publishversionbody", + "api_workflow_rationale_135", "api_workflow_startinstancebody", + "api_workflow_taskactionbody", "basemodel", "core_data_scope_rationale_1", "core_data_scope_rationale_113", @@ -1076,6 +1119,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", @@ -1206,10 +1260,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", @@ -1220,7 +1287,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", @@ -1250,18 +1316,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", @@ -1286,8 +1340,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", @@ -1296,6 +1370,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", @@ -1364,7 +1439,9 @@ "schemas_workflow_startinstancerequest", "schemas_workflow_taskresponse", "schemas_workflow_transitiondata", - "schemas_workflow_versionresponse" + "schemas_workflow_versionresponse", + "services_workflow_engine_workflowengine", + "services_workflow_engine_workflowengine_init" ], "2": [ "api_env_detect_rationale_1", @@ -1386,48 +1463,43 @@ "api_operations_storageslotupdatebody", "api_operations_uvdisinfectlogcreatebody", "api_operations_uvdisinfectlogupdatebody", - "api_workflow_rationale_135", - "api_workflow_taskactionbody", "base", "crud_clean_room_rationale_1", + "crud_clinical_payment_rationale_143", + "crud_clinical_payment_rationale_173", + "crud_clinical_payment_rationale_74", + "crud_outbound_handover_inventory_rationale_1", + "crud_outbound_handover_inventory_rationale_164", + "crud_outbound_handover_inventory_rationale_237", + "crud_outbound_handover_inventory_rationale_35", + "crud_outbound_handover_inventory_rationale_65", "crud_outbound_release_material_rationale_1", "crud_outbound_release_material_rationale_168", "crud_outbound_release_material_rationale_296", + "crud_outbound_release_review_rationale_128", + "crud_outbound_release_review_rationale_469", + "crud_outbound_release_review_rationale_559", + "crud_outbound_release_review_rationale_70", + "crud_outbound_release_review_rationale_83", + "crud_pilot_application_rationale_1", + "crud_pilot_application_rationale_104", + "crud_pilot_application_rationale_1476", + "crud_pilot_application_rationale_1577", + "crud_pilot_application_rationale_1623", + "crud_pilot_application_rationale_69", "crud_pilot_checkup_rationale_1", "crud_pilot_checkup_rationale_715", "crud_pilot_checkup_rationale_883", "crud_pilot_checkup_rationale_927", - "crud_pilot_delivery_rationale_1", - "crud_pilot_delivery_rationale_175", - "crud_pilot_delivery_rationale_359", - "crud_pilot_delivery_rationale_542", - "crud_pilot_delivery_rationale_643", - "crud_pilot_service_rationale_1", - "crud_pilot_service_rationale_1326", - "crud_pilot_service_rationale_2370", - "crud_pilot_service_rationale_2479", - "crud_pilot_service_rationale_2523", - "crud_pilot_service_rationale_2557", - "crud_pilot_service_rationale_2693", - "crud_pilot_service_rationale_2719", - "crud_pilot_service_rationale_2808", - "crud_pilot_service_rationale_2847", - "crud_pilot_service_rationale_2994", - "crud_pilot_service_rationale_3099", - "crud_pilot_service_rationale_3222", - "crud_pilot_service_rationale_3299", - "crud_pilot_service_rationale_3323", - "crud_pilot_service_rationale_3364", - "crud_pilot_service_rationale_3399", - "crud_pilot_service_rationale_3432", - "crud_pilot_service_rationale_3491", - "crud_pilot_service_rationale_3630", - "crud_pilot_service_rationale_3668", - "crud_pilot_service_rationale_3709", - "crud_pilot_service_rationale_3809", - "crud_pilot_service_rationale_4042", - "crud_pilot_service_rationale_4139", - "crud_pilot_service_rationale_4254", + "crud_pilot_infusion_confirm_rationale_113", + "crud_pilot_infusion_schedule_mgmt_rationale_1", + "crud_pilot_infusion_schedule_mgmt_rationale_151", + "crud_pilot_infusion_schedule_mgmt_rationale_700", + "crud_pilot_outbound_status_sync_rationale_1", + "crud_pilot_outbound_status_sync_rationale_128", + "crud_pilot_outbound_status_sync_rationale_171", + "crud_pilot_outbound_status_sync_rationale_64", + "crud_pilot_outbound_status_sync_rationale_96", "crud_process_rationale_1", "crud_process_rationale_264", "crud_process_route_rationale_1", @@ -1442,6 +1514,26 @@ "crud_production_material_usage_rationale_567", "crud_production_material_usage_rationale_745", "crud_production_material_usage_rationale_850", + "crud_production_task_rationale_1", + "crud_production_task_rationale_123", + "crud_production_task_rationale_1337", + "crud_production_task_rationale_1950", + "crud_production_task_rationale_1981", + "crud_production_task_rationale_2172", + "crud_production_task_rationale_2297", + "crud_production_task_rationale_402", + "crud_production_task_rationale_411", + "crud_production_work_order_rationale_139", + "crud_production_work_order_rationale_242", + "crud_production_work_order_rationale_306", + "crud_production_work_order_rationale_336", + "crud_production_work_order_rationale_387", + "crud_production_work_order_rationale_406", + "crud_production_work_order_rationale_627", + "crud_production_work_order_rationale_686", + "crud_production_work_order_rationale_734", + "crud_production_work_order_rationale_785", + "crud_production_work_order_rationale_811", "crud_qc_material_usage_rationale_188", "crud_qc_material_usage_rationale_19", "crud_qc_material_usage_rationale_349", @@ -1452,6 +1544,30 @@ "crud_qc_material_usage_rationale_548", "crud_qc_material_usage_rationale_714", "crud_qc_material_usage_rationale_814", + "crud_qc_task_result_rationale_43", + "crud_qc_task_result_rationale_96", + "crud_qc_work_order_rationale_1185", + "crud_qc_work_order_rationale_1308", + "crud_qc_work_order_rationale_1391", + "crud_qc_work_order_rationale_1515", + "crud_qc_work_order_rationale_1826", + "crud_qc_work_order_rationale_1867", + "crud_qc_work_order_rationale_202", + "crud_qc_work_order_rationale_2147", + "crud_qc_work_order_rationale_2406", + "crud_qc_work_order_rationale_292", + "crud_qc_work_order_rationale_352", + "crud_qc_work_order_rationale_361", + "crud_qc_work_order_rationale_404", + "crud_qc_work_order_rationale_704", + "crud_qc_work_order_rationale_824", + "crud_qc_work_order_rationale_86", + "crud_qc_work_order_rationale_908", + "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_workflow_rationale_1", "models_clinical_payment_bizpilotpayment", "models_clinical_payment_py", @@ -1465,26 +1581,7 @@ "models_material_bizmaterialusage", "models_material_py", "models_models_bizbiznosequence", - "models_models_bizcellproductprice", - "models_models_bizcellproductprojectsystem", - "models_models_bizcellproductprojectsystemitem", - "models_models_bizcellproductspec", - "models_models_bizcellproducttype", - "models_models_bizchannel", - "models_models_bizchannelaccount", - "models_models_bizchannelagreement", - "models_models_bizchannelagreementproductprice", - "models_models_bizchannelinvoice", - "models_models_bizchannelmailaddress", - "models_models_bizchannelproductquota", - "models_models_bizchannelserviceorder", - "models_models_bizchannelserviceorderproduct", - "models_models_bizchannelserviceordertxn", - "models_models_bizcheckupinstitution", - "models_models_bizcheckupinstitutioninvoice", - "models_models_bizcheckupinstitutionpackage", - "models_models_bizcheckupinstitutionpackageitem", - "models_models_bizcheckupinstitutionproject", + "models_models_bizcellproduct", "models_models_bizcleanroom", "models_models_bizcleanroomaccesslog", "models_models_bizcleanroomuvdisinfectlog", @@ -1496,7 +1593,6 @@ "models_models_bizenvdetectrecord", "models_models_bizequipment", "models_models_bizexhibitionappointment", - "models_models_bizexpresscompany", "models_models_bizinsurancecompany", "models_models_bizinsurancecompanyinvoice", "models_models_bizinsuranceprojectprice", @@ -1509,6 +1605,7 @@ "models_models_bizoutboundreleaseqcmaterial", "models_models_bizoutboundreleasereview", "models_models_bizoutputtype", + "models_models_bizpilotapplication", "models_models_bizpilotcheckup", "models_models_bizpilotcheckupactualitem", "models_models_bizpilotcheckupreserveitem", @@ -1516,6 +1613,10 @@ "models_models_bizpilotdeliverymaterial", "models_models_bizpilotdeliverymethod", "models_models_bizpilotinfusionconfirm", + "models_models_bizpilotinfusionplan", + "models_models_bizpilotinfusionschedule", + "models_models_bizpilotinfusionscheduleproduct", + "models_models_bizpilotpatient", "models_models_bizprocess", "models_models_bizprocesscategory", "models_models_bizprocessconsumable", @@ -1528,23 +1629,35 @@ "models_models_bizprocessroutestepdatacollection", "models_models_bizprocessroutestepoutput", "models_models_bizprocessroutestepreagent", + "models_models_bizproductiontask", "models_models_bizproductiontaskhandover", + "models_models_bizproductiontaskinput", + "models_models_bizproductiontaskoutput", + "models_models_bizproductiontaskstep", "models_models_bizproductiontaskstepconfiguredreagent", - "models_models_bizprotocolaudit", - "models_models_bizprotocolpayment", - "models_models_bizprotocolpaymentdetail", + "models_models_bizproductiontaskstepconsumable", + "models_models_bizproductiontaskstepdatacollection", + "models_models_bizproductiontaskstepoutput", + "models_models_bizproductiontaskstepreagent", + "models_models_bizproductionworkorder", + "models_models_bizqclabtestitem", "models_models_bizqcsmsnotification", + "models_models_bizqctask", "models_models_bizqctaskassignee", "models_models_bizqcthirdpartycompany", + "models_models_bizqcthirdpartyitem", + "models_models_bizqcworkorder", + "models_models_bizqcworkorderlabitem", + "models_models_bizqcworkorderthirditem", "models_models_bizreagent", "models_models_bizreagentstocklog", "models_models_bizsamplereceptioncheckitem", - "models_models_bizsamplereceptioncheckresult", "models_models_bizsamplesmsnotification", "models_models_bizsopdocument", "models_models_bizstorageentrysmsnotification", "models_models_bizstoragefacility", "models_models_bizstoragefacilityslot", + "models_models_bizstorageslotoccupancy", "models_models_py", "models_models_rationale_1", "models_models_rationale_1024", @@ -1700,17 +1813,18 @@ "models_qc_param_py", "services_storage_facility_code_rationale_1", "services_web_auth_roles_rationale_1", - "services_web_auth_roles_rationale_17", - "services_web_auth_roles_rationale_29", - "services_web_auth_roles_rationale_57", + "services_web_auth_roles_rationale_20", + "services_web_auth_roles_rationale_32", + "services_web_auth_roles_rationale_54", + "services_web_auth_roles_rationale_59", + "services_web_auth_roles_rationale_70", "services_workflow_engine_rationale_1" ], "3": [ + "api_collection_protocol_ensure_customer_for_mother", "api_collection_protocol_persist_protocol_sub_resources", "api_ethnic_list_ethnics_for_select", "api_ethnic_py", - "api_operations_list_access_logs", - "api_operations_list_uv_disinfect_logs", "core_data_scope_apply_data_scope", "core_data_scope_get_child_dept_ids", "core_data_scope_get_user_dept_id", @@ -1731,28 +1845,6 @@ "crud_api_request_log_get_multi_with_filters", "crud_api_request_log_py", "crud_base_crudbase_count", - "crud_clean_room_access_log_to_dict", - "crud_clean_room_calc_duration_minutes", - "crud_clean_room_create_access_log", - "crud_clean_room_create_clean_room", - "crud_clean_room_create_uv_disinfect_log", - "crud_clean_room_get_access_log", - "crud_clean_room_get_clean_room", - "crud_clean_room_get_uv_disinfect_log", - "crud_clean_room_list_access_logs", - "crud_clean_room_list_clean_rooms", - "crud_clean_room_list_uv_disinfect_logs", - "crud_clean_room_py", - "crud_clean_room_room_code_exists", - "crud_clean_room_row_to_dict", - "crud_clean_room_soft_delete_access_log", - "crud_clean_room_soft_delete_clean_room", - "crud_clean_room_soft_delete_uv_disinfect_log", - "crud_clean_room_total_pages", - "crud_clean_room_update_access_log", - "crud_clean_room_update_clean_room", - "crud_clean_room_update_uv_disinfect_log", - "crud_clean_room_uv_disinfect_log_to_dict", "crud_collection_protocol_add_months_yyyymmdd", "crud_collection_protocol_align_fq_payment_details_payload", "crud_collection_protocol_apply_payment_detail_list_filters", @@ -1835,6 +1927,30 @@ "crud_collection_protocol_user_nick_name_map", "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", + "crud_collection_region_get_collection_region", + "crud_collection_region_get_hospital", + "crud_collection_region_hospital_names_by_region_ids", + "crud_collection_region_list_collection_regions", + "crud_collection_region_list_hospitals", + "crud_collection_region_py", + "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", @@ -1853,8 +1969,23 @@ "crud_material_stock_log_py", "crud_material_stock_log_row_to_dict", "crud_material_stock_log_user_nick_name_map", + "crud_pilot_service_list_channel_agreement_prices", "crud_pilot_service_list_channel_agreements", - "crud_production_work_order_list_temp_production_work_orders", + "crud_pilot_service_list_channel_invoices", + "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_list_project_system_items", + "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_protocol_sample_collection_apply_sample_status_filter", "crud_protocol_sample_collection_base_query", "crud_protocol_sample_collection_fmt_dt", @@ -1872,30 +2003,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_list_linked_task_usages", - "crud_qc_material_usage_list_my_usages", - "crud_qc_material_usage_list_requisition_options", - "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_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", @@ -1915,6 +2022,18 @@ "crud_qc_sms_notification_toggle_notification_status", "crud_qc_sms_notification_total_pages", "crud_qc_sms_notification_unicode_ci", + "crud_reagent_stock_log_deduct_for_step", + "crud_reagent_stock_log_display_remark", + "crud_reagent_stock_log_list_stock_logs", + "crud_reagent_stock_log_parse_receiver_purpose_from_remark", + "crud_reagent_stock_log_py", + "crud_reagent_stock_log_rationale_1", + "crud_reagent_stock_log_rationale_164", + "crud_reagent_stock_log_rationale_216", + "crud_reagent_stock_log_resolve_receiver_purpose", + "crud_reagent_stock_log_revert_step_stock_changes", + "crud_reagent_stock_log_row_to_dict", + "crud_reagent_stock_log_user_nick_name_map", "crud_research_donation_sample_collection_apply_sample_status_filter", "crud_research_donation_sample_collection_base_query", "crud_research_donation_sample_collection_fmt_dt", @@ -1923,8 +2042,20 @@ "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_issue_sample_codes", + "crud_sample_code_batch_revoke_sample_codes", + "crud_sample_code_create_sample_code", + "crud_sample_code_get_sample_code", "crud_sample_code_list_sample_codes", + "crud_sample_code_parse_issued_time", + "crud_sample_code_py", + "crud_sample_code_rationale_1", + "crud_sample_code_resolve_issued_user_display_name", "crud_sample_code_row_to_dict", + "crud_sample_code_sample_code_exists", + "crud_sample_code_soft_delete_sample_code", + "crud_sample_code_total_pages", + "crud_sample_code_update_sample_code", "crud_sample_reception_get_lab_storage_code_map_by_sample_codes", "crud_site_create_site", "crud_site_get_site", @@ -1950,7 +2081,6 @@ "crud_storage_entry_sms_notification_total_pages", "crud_storage_entry_sms_notification_unicode_ci", "crud_workflow_list_completed_tasks", - "crud_workflow_list_my_instances", "crud_workflow_list_pending_tasks", "crud_workflow_task_row_to_dict", "services_protocol_payment_installment_add_days_yyyymmdd", @@ -1968,264 +2098,6 @@ "services_protocol_payment_installment_rationale_92" ], "4": [ - "core_utils_generate_uuid", - "crud_base_crudbase_exists", - "crud_collection_region_create_collection_region", - "crud_collection_region_create_hospital", - "crud_collection_region_get_collection_region", - "crud_collection_region_get_hospital", - "crud_collection_region_hospital_to_dict", - "crud_collection_region_list_hospitals", - "crud_collection_region_py", - "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_consumable_batch_stock_in", - "crud_consumable_batch_stock_out", - "crud_consumable_build_manual_out_remark", - "crud_consumable_consumable_code_exists", - "crud_consumable_create_consumable", - "crud_consumable_dec", - "crud_consumable_get_consumable", - "crud_consumable_is_enabled_status", - "crud_consumable_list_consumables", - "crud_consumable_norm_status", - "crud_consumable_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", - "crud_consumable_soft_delete_consumable", - "crud_consumable_stock_in", - "crud_consumable_stock_out", - "crud_consumable_total_pages", - "crud_consumable_update_consumable", - "crud_pilot_delivery_deduct_fee_on_delivery", - "crud_pilot_service_activate_channel_agreement", - "crud_pilot_service_apply_gmcp_order_quotas", - "crud_pilot_service_apply_purchase_txn_holdings", - "crud_pilot_service_apply_unsubscribe_txn_holdings", - "crud_pilot_service_batch_gmcp_current_holding_amounts", - "crud_pilot_service_batch_gmcp_purchase_totals", - "crud_pilot_service_calc_gmcp_current_holding_amount_from_db", - "crud_pilot_service_calc_gmcp_purchase_total", - "crud_pilot_service_calc_gmcp_purchase_total_from_db", - "crud_pilot_service_cell_product_price_code_exists", - "crud_pilot_service_cell_product_spec_code_exists", - "crud_pilot_service_cell_product_type_code_exists", - "crud_pilot_service_channel_agreement_price_exists", - "crud_pilot_service_channel_agreement_price_item_key", - "crud_pilot_service_checkup_package_code_exists", - "crud_pilot_service_confirm_receipt", - "crud_pilot_service_confirm_refund", - "crud_pilot_service_confirm_txn", - "crud_pilot_service_create_cell_product_price", - "crud_pilot_service_create_cell_product_spec", - "crud_pilot_service_create_cell_product_type", - "crud_pilot_service_create_channel", - "crud_pilot_service_create_channel_agreement", - "crud_pilot_service_create_channel_agreement_price", - "crud_pilot_service_create_channel_invoice", - "crud_pilot_service_create_channel_mail_address", - "crud_pilot_service_create_channel_service_order", - "crud_pilot_service_create_checkup_institution", - "crud_pilot_service_create_checkup_institution_invoice", - "crud_pilot_service_create_checkup_institution_package", - "crud_pilot_service_create_checkup_institution_project", - "crud_pilot_service_create_project_system", - "crud_pilot_service_create_project_system_item", - "crud_pilot_service_create_purchase_txn", - "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", - "crud_pilot_service_get_cell_product_type", - "crud_pilot_service_get_channel", - "crud_pilot_service_get_channel_account", - "crud_pilot_service_get_checkup_institution", - "crud_pilot_service_get_checkup_institution_package", - "crud_pilot_service_get_checkup_institution_package_detail", - "crud_pilot_service_get_checkup_project_for_package", - "crud_pilot_service_get_or_create_channel_account", - "crud_pilot_service_get_project_system", - "crud_pilot_service_get_service_order", - "crud_pilot_service_get_service_order_products", - "crud_pilot_service_get_service_order_txn", - "crud_pilot_service_get_valid_channel_agreement", - "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", - "crud_pilot_service_list_service_order_txns", - "crud_pilot_service_normalize_date_bound", - "crud_pilot_service_package_items_to_dicts", - "crud_pilot_service_project_system_code_exists", - "crud_pilot_service_py", - "crud_pilot_service_rationale_1305", - "crud_pilot_service_reduce_channel_product_quota", - "crud_pilot_service_replace_gmcp_product_rows", - "crud_pilot_service_resolve_agreement_price_cell_type", - "crud_pilot_service_resolve_service_order_current_balance", - "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", - "crud_pilot_service_soft_delete_channel", - "crud_pilot_service_soft_delete_channel_agreement", - "crud_pilot_service_soft_delete_channel_agreement_price", - "crud_pilot_service_soft_delete_channel_invoice", - "crud_pilot_service_soft_delete_channel_mail_address", - "crud_pilot_service_soft_delete_checkup_institution", - "crud_pilot_service_soft_delete_checkup_institution_invoice", - "crud_pilot_service_soft_delete_checkup_institution_package", - "crud_pilot_service_soft_delete_checkup_institution_project", - "crud_pilot_service_soft_delete_project_system", - "crud_pilot_service_soft_delete_project_system_item", - "crud_pilot_service_soft_delete_service_order", - "crud_pilot_service_submit_finance_confirm", - "crud_pilot_service_submit_refund", - "crud_pilot_service_submit_txn_finance", - "crud_pilot_service_sum_package_item_fees", - "crud_pilot_service_total_pages", - "crud_pilot_service_update_cell_product_price", - "crud_pilot_service_update_cell_product_spec", - "crud_pilot_service_update_cell_product_type", - "crud_pilot_service_update_channel", - "crud_pilot_service_update_channel_agreement", - "crud_pilot_service_update_channel_agreement_price", - "crud_pilot_service_update_channel_invoice", - "crud_pilot_service_update_channel_mail_address", - "crud_pilot_service_update_channel_service_order", - "crud_pilot_service_update_checkup_institution", - "crud_pilot_service_update_checkup_institution_invoice", - "crud_pilot_service_update_checkup_institution_package", - "crud_pilot_service_update_checkup_institution_project", - "crud_pilot_service_update_project_system", - "crud_pilot_service_update_project_system_item", - "crud_pilot_service_update_service_order_txn", - "crud_pilot_service_upsert_channel_product_quota", - "crud_pilot_service_user_nick_name_map", - "crud_pilot_service_validate_package_items_for_save", - "crud_pilot_service_void_channel_agreement", - "crud_pilot_service_void_service_order", - "crud_pilot_service_void_txn", - "crud_process_consumable_row_to_dict", - "crud_process_create_process", - "crud_process_create_sub_consumable", - "crud_process_create_sub_data_collection", - "crud_process_create_sub_output", - "crud_process_create_sub_reagent", - "crud_process_data_collection_row_to_dict", - "crud_process_get_process", - "crud_process_get_process_detail", - "crud_process_list_all_processes", - "crud_process_list_processes", - "crud_process_output_row_to_dict", - "crud_process_process_code_exists", - "crud_process_py", - "crud_process_reagent_row_to_dict", - "crud_process_route_add_step", - "crud_process_route_copy_step", - "crud_process_route_create_route", - "crud_process_route_create_step_consumable", - "crud_process_route_create_step_data_collection", - "crud_process_route_create_step_output", - "crud_process_route_create_step_reagent", - "crud_process_route_get_route", - "crud_process_route_get_route_detail", - "crud_process_route_py", - "crud_process_route_reorder_steps", - "crud_process_route_set_current_route", - "crud_process_route_soft_delete_route", - "crud_process_route_soft_delete_step", - "crud_process_route_soft_delete_sub_records", - "crud_process_route_step_consumable_row_to_dict", - "crud_process_route_step_data_collection_row_to_dict", - "crud_process_route_step_output_row_to_dict", - "crud_process_route_step_reagent_row_to_dict", - "crud_process_route_step_row_to_dict", - "crud_process_route_total_pages", - "crud_process_route_update_route", - "crud_process_route_update_step_consumables", - "crud_process_route_update_step_data_collections", - "crud_process_route_update_step_outputs", - "crud_process_route_update_step_reagents", - "crud_process_row_to_dict", - "crud_process_soft_delete_process", - "crud_process_soft_delete_sub_records", - "crud_process_sub_item_with_order", - "crud_process_total_pages", - "crud_process_update_process", - "crud_reagent_batch_stock_in", - "crud_reagent_batch_stock_out", - "crud_reagent_create_reagent", - "crud_reagent_dec", - "crud_reagent_get_reagent", - "crud_reagent_is_enabled_status", - "crud_reagent_list_reagents", - "crud_reagent_norm_status", - "crud_reagent_py", - "crud_reagent_reagent_code_exists", - "crud_reagent_row_to_dict", - "crud_reagent_soft_delete_reagent", - "crud_reagent_stock_in", - "crud_reagent_stock_out", - "crud_reagent_total_pages", - "crud_reagent_update_reagent" - ], - "5": [ "core_db_collation_eq_unicode", "core_db_collation_like_unicode", "core_db_collation_py", @@ -2245,6 +2117,8 @@ "crud_outbound_release_review_review_schedule", "crud_outbound_release_review_row_to_dict", "crud_outbound_release_review_total_pages", + "crud_pilot_service_list_channels", + "crud_pilot_service_row_to_dict_channel", "crud_production_task_list_production_tasks", "crud_production_task_production_conclusion_label", "crud_production_work_order_accept_conclusion_label", @@ -2252,6 +2126,7 @@ "crud_production_work_order_attach_reception_detail", "crud_production_work_order_complete_production_work_order", "crud_production_work_order_create_outbound_production_work_order", + "crud_production_work_order_create_production_work_order_from_reception", "crud_production_work_order_create_production_work_order_manual", "crud_production_work_order_create_temp_production_work_order", "crud_production_work_order_delete_production_work_order", @@ -2266,6 +2141,7 @@ "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", @@ -2277,6 +2153,7 @@ "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", @@ -2313,6 +2190,10 @@ "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_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", @@ -2324,6 +2205,7 @@ "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_qc_info_map_for_samples", "crud_qc_work_order_get_task_by_source_line_id", @@ -2332,6 +2214,7 @@ "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_temp_qc_work_orders", "crud_qc_work_order_list_work_orders", "crud_qc_work_order_load_sample_type_name_map", @@ -2362,11 +2245,7 @@ "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", @@ -2462,6 +2341,240 @@ "services_qc_work_order_fee_summary_received_amount_from_details", "services_qc_work_order_fee_summary_sort_payment_details" ], + "5": [ + "core_utils_generate_uuid", + "crud_base_crudbase_exists", + "crud_consumable_batch_stock_in", + "crud_consumable_batch_stock_out", + "crud_consumable_build_manual_out_remark", + "crud_consumable_consumable_code_exists", + "crud_consumable_create_consumable", + "crud_consumable_dec", + "crud_consumable_get_consumable", + "crud_consumable_is_enabled_status", + "crud_consumable_list_consumables", + "crud_consumable_norm_status", + "crud_consumable_py", + "crud_consumable_rationale_1", + "crud_consumable_row_to_dict", + "crud_consumable_soft_delete_consumable", + "crud_consumable_stock_in", + "crud_consumable_stock_out", + "crud_consumable_total_pages", + "crud_consumable_update_consumable", + "crud_pilot_delivery_create_delivery", + "crud_pilot_delivery_deduct_fee_on_delivery", + "crud_pilot_delivery_delete_delivery_material", + "crud_pilot_delivery_generate_delivery_no", + "crud_pilot_delivery_get_delivery_by_schedule", + "crud_pilot_delivery_get_delivery_method", + "crud_pilot_delivery_list_deliveries_by_application", + "crud_pilot_delivery_list_delivery_materials", + "crud_pilot_delivery_py", + "crud_pilot_delivery_rationale_1", + "crud_pilot_delivery_rationale_175", + "crud_pilot_delivery_rationale_359", + "crud_pilot_delivery_rationale_542", + "crud_pilot_delivery_rationale_643", + "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_service_activate_channel_agreement", + "crud_pilot_service_apply_gmcp_order_quotas", + "crud_pilot_service_apply_purchase_txn_holdings", + "crud_pilot_service_apply_unsubscribe_txn_holdings", + "crud_pilot_service_batch_gmcp_current_holding_amounts", + "crud_pilot_service_batch_gmcp_purchase_totals", + "crud_pilot_service_calc_gmcp_current_holding_amount_from_db", + "crud_pilot_service_calc_gmcp_purchase_total", + "crud_pilot_service_calc_gmcp_purchase_total_from_db", + "crud_pilot_service_cell_product_price_code_exists", + "crud_pilot_service_cell_product_spec_code_exists", + "crud_pilot_service_cell_product_type_code_exists", + "crud_pilot_service_channel_agreement_price_exists", + "crud_pilot_service_channel_agreement_price_item_key", + "crud_pilot_service_checkup_package_code_exists", + "crud_pilot_service_confirm_receipt", + "crud_pilot_service_confirm_refund", + "crud_pilot_service_confirm_txn", + "crud_pilot_service_create_cell_product_price", + "crud_pilot_service_create_cell_product_spec", + "crud_pilot_service_create_cell_product_type", + "crud_pilot_service_create_channel", + "crud_pilot_service_create_channel_agreement", + "crud_pilot_service_create_channel_agreement_price", + "crud_pilot_service_create_channel_invoice", + "crud_pilot_service_create_channel_mail_address", + "crud_pilot_service_create_channel_service_order", + "crud_pilot_service_create_checkup_institution", + "crud_pilot_service_create_checkup_institution_invoice", + "crud_pilot_service_create_checkup_institution_package", + "crud_pilot_service_create_checkup_institution_project", + "crud_pilot_service_create_project_system", + "crud_pilot_service_create_project_system_item", + "crud_pilot_service_create_purchase_txn", + "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", + "crud_pilot_service_get_cell_product_type", + "crud_pilot_service_get_channel", + "crud_pilot_service_get_channel_account", + "crud_pilot_service_get_checkup_institution", + "crud_pilot_service_get_checkup_institution_package", + "crud_pilot_service_get_checkup_institution_package_detail", + "crud_pilot_service_get_checkup_project_for_package", + "crud_pilot_service_get_or_create_channel_account", + "crud_pilot_service_get_project_system", + "crud_pilot_service_get_service_order", + "crud_pilot_service_get_service_order_products", + "crud_pilot_service_get_service_order_txn", + "crud_pilot_service_get_valid_channel_agreement", + "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_product_quotas", + "crud_pilot_service_list_channel_service_orders", + "crud_pilot_service_list_checkup_institution_packages", + "crud_pilot_service_list_package_items_raw", + "crud_pilot_service_list_project_systems", + "crud_pilot_service_list_service_order_txns", + "crud_pilot_service_normalize_date_bound", + "crud_pilot_service_package_items_to_dicts", + "crud_pilot_service_project_system_code_exists", + "crud_pilot_service_py", + "crud_pilot_service_rationale_1", + "crud_pilot_service_rationale_1305", + "crud_pilot_service_rationale_1326", + "crud_pilot_service_rationale_2370", + "crud_pilot_service_rationale_2479", + "crud_pilot_service_rationale_2523", + "crud_pilot_service_rationale_2557", + "crud_pilot_service_rationale_2693", + "crud_pilot_service_rationale_2719", + "crud_pilot_service_rationale_2808", + "crud_pilot_service_rationale_2847", + "crud_pilot_service_rationale_2994", + "crud_pilot_service_rationale_3099", + "crud_pilot_service_rationale_3222", + "crud_pilot_service_rationale_3299", + "crud_pilot_service_rationale_3323", + "crud_pilot_service_rationale_3364", + "crud_pilot_service_rationale_3399", + "crud_pilot_service_rationale_3432", + "crud_pilot_service_rationale_3491", + "crud_pilot_service_rationale_3630", + "crud_pilot_service_rationale_3668", + "crud_pilot_service_rationale_3709", + "crud_pilot_service_rationale_3809", + "crud_pilot_service_rationale_4042", + "crud_pilot_service_rationale_4139", + "crud_pilot_service_rationale_4254", + "crud_pilot_service_reduce_channel_product_quota", + "crud_pilot_service_replace_gmcp_product_rows", + "crud_pilot_service_resolve_agreement_price_cell_type", + "crud_pilot_service_resolve_service_order_current_balance", + "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_account", + "crud_pilot_service_row_to_dict_channel_product_quota", + "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_project_system", + "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", + "crud_pilot_service_soft_delete_channel", + "crud_pilot_service_soft_delete_channel_agreement", + "crud_pilot_service_soft_delete_channel_agreement_price", + "crud_pilot_service_soft_delete_channel_invoice", + "crud_pilot_service_soft_delete_channel_mail_address", + "crud_pilot_service_soft_delete_checkup_institution", + "crud_pilot_service_soft_delete_checkup_institution_invoice", + "crud_pilot_service_soft_delete_checkup_institution_package", + "crud_pilot_service_soft_delete_checkup_institution_project", + "crud_pilot_service_soft_delete_project_system", + "crud_pilot_service_soft_delete_project_system_item", + "crud_pilot_service_soft_delete_service_order", + "crud_pilot_service_submit_finance_confirm", + "crud_pilot_service_submit_refund", + "crud_pilot_service_submit_txn_finance", + "crud_pilot_service_sum_package_item_fees", + "crud_pilot_service_total_pages", + "crud_pilot_service_update_cell_product_price", + "crud_pilot_service_update_cell_product_spec", + "crud_pilot_service_update_cell_product_type", + "crud_pilot_service_update_channel", + "crud_pilot_service_update_channel_agreement", + "crud_pilot_service_update_channel_agreement_price", + "crud_pilot_service_update_channel_invoice", + "crud_pilot_service_update_channel_mail_address", + "crud_pilot_service_update_channel_service_order", + "crud_pilot_service_update_checkup_institution", + "crud_pilot_service_update_checkup_institution_invoice", + "crud_pilot_service_update_checkup_institution_package", + "crud_pilot_service_update_checkup_institution_project", + "crud_pilot_service_update_project_system", + "crud_pilot_service_update_project_system_item", + "crud_pilot_service_update_service_order_txn", + "crud_pilot_service_upsert_channel_product_quota", + "crud_pilot_service_user_nick_name_map", + "crud_pilot_service_validate_package_items_for_save", + "crud_pilot_service_void_channel_agreement", + "crud_pilot_service_void_service_order", + "crud_pilot_service_void_txn", + "crud_reagent_batch_stock_in", + "crud_reagent_batch_stock_out", + "crud_reagent_create_reagent", + "crud_reagent_dec", + "crud_reagent_get_reagent", + "crud_reagent_is_enabled_status", + "crud_reagent_list_reagents", + "crud_reagent_norm_status", + "crud_reagent_py", + "crud_reagent_reagent_code_exists", + "crud_reagent_row_to_dict", + "crud_reagent_soft_delete_reagent", + "crud_reagent_stock_in", + "crud_reagent_stock_out", + "crud_reagent_total_pages", + "crud_reagent_update_reagent", + "models_models_bizcellproductprice", + "models_models_bizcellproductprojectsystem", + "models_models_bizcellproductprojectsystemitem", + "models_models_bizcellproductspec", + "models_models_bizcellproducttype", + "models_models_bizchannel", + "models_models_bizchannelaccount", + "models_models_bizchannelagreement", + "models_models_bizchannelagreementproductprice", + "models_models_bizchannelinvoice", + "models_models_bizchannelmailaddress", + "models_models_bizchannelproductquota", + "models_models_bizchannelserviceorder", + "models_models_bizchannelserviceorderproduct", + "models_models_bizchannelserviceordertxn", + "models_models_bizcheckupinstitution", + "models_models_bizcheckupinstitutioninvoice", + "models_models_bizcheckupinstitutionpackage", + "models_models_bizcheckupinstitutionpackageitem", + "models_models_bizcheckupinstitutionproject" + ], "6": [ "api_basic_info_cellsampletypecreatebody", "api_basic_info_cellsampletypeupdatebody", @@ -2493,6 +2606,12 @@ "api_collection_protocol_rationale_68", "api_collection_protocol_refundfinanceconfirmbody", "api_collection_protocol_refundfinancesubmitbody", + "crud_biz_no_generator_allocate_next_biz_no", + "crud_biz_no_generator_format_biz_no", + "crud_biz_no_generator_prefix_for", + "crud_biz_no_generator_py", + "crud_biz_no_generator_rationale_1", + "crud_biz_no_generator_rationale_35", "crud_cell_product_rationale_1", "crud_cell_product_rationale_1017", "crud_cell_product_rationale_39", @@ -2500,10 +2619,25 @@ "crud_cell_product_rationale_570", "crud_cell_product_rationale_640", "crud_cell_product_rationale_769", - "crud_clinical_payment_rationale_143", - "crud_clinical_payment_rationale_173", - "crud_clinical_payment_rationale_74", + "crud_collection_protocol_create_collection_protocol", + "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_collection_protocol_rationale_1", "crud_collection_protocol_rationale_134", "crud_collection_protocol_rationale_1353", @@ -2520,88 +2654,50 @@ "crud_collection_protocol_rationale_64", "crud_collection_protocol_rationale_98", "crud_collection_region_rationale_29", - "crud_outbound_handover_inventory_rationale_1", - "crud_outbound_handover_inventory_rationale_164", - "crud_outbound_handover_inventory_rationale_237", - "crud_outbound_handover_inventory_rationale_35", - "crud_outbound_handover_inventory_rationale_65", - "crud_outbound_release_review_rationale_128", - "crud_outbound_release_review_rationale_469", - "crud_outbound_release_review_rationale_559", - "crud_outbound_release_review_rationale_70", - "crud_outbound_release_review_rationale_83", - "crud_pilot_application_rationale_1", - "crud_pilot_application_rationale_104", - "crud_pilot_application_rationale_1476", - "crud_pilot_application_rationale_1577", - "crud_pilot_application_rationale_1623", - "crud_pilot_application_rationale_69", - "crud_pilot_infusion_confirm_rationale_113", - "crud_pilot_infusion_schedule_mgmt_rationale_1", - "crud_pilot_infusion_schedule_mgmt_rationale_151", - "crud_pilot_infusion_schedule_mgmt_rationale_700", - "crud_pilot_outbound_status_sync_rationale_1", - "crud_pilot_outbound_status_sync_rationale_128", - "crud_pilot_outbound_status_sync_rationale_171", - "crud_pilot_outbound_status_sync_rationale_64", - "crud_pilot_outbound_status_sync_rationale_96", - "crud_production_task_copy_task_step", - "crud_production_task_rationale_1", - "crud_production_task_rationale_123", - "crud_production_task_rationale_1337", - "crud_production_task_rationale_1950", - "crud_production_task_rationale_1981", - "crud_production_task_rationale_2172", - "crud_production_task_rationale_2297", - "crud_production_task_rationale_402", - "crud_production_task_rationale_411", - "crud_production_work_order_create_production_work_order_from_reception", - "crud_production_work_order_rationale_139", - "crud_production_work_order_rationale_242", - "crud_production_work_order_rationale_306", - "crud_production_work_order_rationale_336", - "crud_production_work_order_rationale_387", - "crud_production_work_order_rationale_406", - "crud_production_work_order_rationale_627", - "crud_production_work_order_rationale_686", - "crud_production_work_order_rationale_734", - "crud_production_work_order_rationale_785", - "crud_production_work_order_rationale_811", + "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_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_599", - "crud_qc_task_result_rationale_43", - "crud_qc_task_result_rationale_96", - "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_1185", - "crud_qc_work_order_rationale_1308", - "crud_qc_work_order_rationale_1391", - "crud_qc_work_order_rationale_1515", - "crud_qc_work_order_rationale_1826", - "crud_qc_work_order_rationale_1867", - "crud_qc_work_order_rationale_202", - "crud_qc_work_order_rationale_2147", - "crud_qc_work_order_rationale_2406", - "crud_qc_work_order_rationale_292", - "crud_qc_work_order_rationale_352", - "crud_qc_work_order_rationale_361", - "crud_qc_work_order_rationale_404", - "crud_qc_work_order_rationale_704", - "crud_qc_work_order_rationale_824", - "crud_qc_work_order_rationale_86", - "crud_qc_work_order_rationale_908", + "crud_research_donation_audit_to_dict", + "crud_research_donation_batch_delete_donations", + "crud_research_donation_collection_to_dict", "crud_research_donation_convert_from_storage", + "crud_research_donation_convert_to_storage", + "crud_research_donation_create_collection", + "crud_research_donation_create_donation", + "crud_research_donation_create_party", + "crud_research_donation_create_samples", + "crud_research_donation_create_transport", + "crud_research_donation_dec", + "crud_research_donation_delete_donation", + "crud_research_donation_fmt_dt", + "crud_research_donation_get_collection", + "crud_research_donation_get_donation_detail", + "crud_research_donation_get_party", + "crud_research_donation_list_audits", + "crud_research_donation_list_donations", + "crud_research_donation_list_sample_transports", + "crud_research_donation_list_samples", + "crud_research_donation_merge_comma_separated_urls", + "crud_research_donation_migrate_donation_sample_child_refs_on_replace", + "crud_research_donation_normalize_date_bound", + "crud_research_donation_normalize_fields", + "crud_research_donation_optional_decimal", + "crud_research_donation_party_to_dict", + "crud_research_donation_py", "crud_research_donation_rationale_1", "crud_research_donation_rationale_105", "crud_research_donation_rationale_1060", @@ -2611,8 +2707,25 @@ "crud_research_donation_rationale_749", "crud_research_donation_rationale_820", "crud_research_donation_rationale_94", + "crud_research_donation_resolve_donation_payload", "crud_research_donation_sample_collection_rationale_1", + "crud_research_donation_sample_to_dict", + "crud_research_donation_soft_delete_all", + "crud_research_donation_soft_delete_collection", + "crud_research_donation_soft_delete_party", + "crud_research_donation_soft_delete_samples", + "crud_research_donation_soft_delete_transports", "crud_research_donation_submit_audit", + "crud_research_donation_total_pages", + "crud_research_donation_transport_to_dict", + "crud_research_donation_update_donation", + "crud_research_donation_user_nick_name_map", + "crud_sample_code_batch_generate_sample_codes", + "crud_sample_code_rationale_261", + "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_save_reception_check_results", "crud_sample_reception_rationale_1117", "crud_sample_reception_rationale_1161", "crud_sample_reception_rationale_118", @@ -2629,48 +2742,27 @@ "crud_sample_reception_rationale_84", "crud_sample_reception_rationale_983", "crud_storage_entry_sms_notification_rationale_185", - "crud_storage_occupancy_rationale_1", - "crud_storage_occupancy_rationale_174", - "crud_storage_occupancy_rationale_316", - "crud_storage_occupancy_rationale_43", "crud_storage_release_review_rationale_724", - "models_models_bizcellproduct", "models_models_bizcellsampletype", "models_models_bizcollectionhospital", "models_models_bizcollectionprotocol", "models_models_bizcollectionprotocolno", "models_models_bizcollectionregion", "models_models_bizcustomer", - "models_models_bizpilotapplication", - "models_models_bizpilotinfusionplan", - "models_models_bizpilotinfusionschedule", - "models_models_bizpilotinfusionscheduleproduct", - "models_models_bizpilotpatient", - "models_models_bizproductiontask", - "models_models_bizproductiontaskinput", - "models_models_bizproductiontaskoutput", - "models_models_bizproductiontaskstep", - "models_models_bizproductiontaskstepconsumable", - "models_models_bizproductiontaskstepdatacollection", - "models_models_bizproductiontaskstepoutput", - "models_models_bizproductiontaskstepreagent", - "models_models_bizproductionworkorder", + "models_models_bizexpresscompany", + "models_models_bizprotocolaudit", "models_models_bizprotocolcollectioninfo", "models_models_bizprotocolfullmoontodo", "models_models_bizprotocolpartycustomer", + "models_models_bizprotocolpayment", + "models_models_bizprotocolpaymentdetail", "models_models_bizprotocolsample", "models_models_bizprotocolsampletransport", "models_models_bizprotocolstoragecert", - "models_models_bizqclabtestitem", - "models_models_bizqctask", - "models_models_bizqcthirdpartyitem", - "models_models_bizqcworkorder", - "models_models_bizqcworkorderlabitem", - "models_models_bizqcworkorderthirditem", "models_models_bizsamplecode", "models_models_bizsamplereception", + "models_models_bizsamplereceptioncheckresult", "models_models_bizstoragereleasereview", - "models_models_bizstorageslotoccupancy", "models_research_donation_bizprotocoldonationconvert", "models_research_donation_bizresearchdonation", "models_research_donation_bizresearchdonationaudit", @@ -2689,394 +2781,10 @@ "services_qc_work_order_fee_summary_rationale_1" ], "7": [ - "api_pilot_application_api_save_application", - "api_pilot_checkup_api_get_checkup_detail", - "crud_base_crudbase_update", - "crud_collection_protocol_get_protocol_nos_used_in_protocols", - "crud_dict_type_create_dict_type", - "crud_dict_type_dict_type_code_exists", - "crud_dict_type_get_dict_type", - "crud_dict_type_list_dict_types", - "crud_dict_type_py", - "crud_dict_type_rationale_1", - "crud_dict_type_row_to_dict", - "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_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_auto_generate_schedules", - "crud_pilot_application_complete_application", - "crud_pilot_application_create_application", - "crud_pilot_application_create_basic_experiment_sale_schedules", - "crud_pilot_application_create_infusion_plan", - "crud_pilot_application_create_schedule", - "crud_pilot_application_create_schedule_products", - "crud_pilot_application_format_yyyy_mm_dd", - "crud_pilot_application_generate_application_no", - "crud_pilot_application_get_application", - "crud_pilot_application_get_or_create_infusion_plan", - "crud_pilot_application_get_patient_by_application", - "crud_pilot_application_get_schedule_for_plan", - "crud_pilot_application_list_applications", - "crud_pilot_application_list_infusion_plans", - "crud_pilot_application_list_schedules_by_plan", - "crud_pilot_application_mark_schedule_complete", - "crud_pilot_application_normalize_infusion_status_code", - "crud_pilot_application_normalize_yyyymmdd", - "crud_pilot_application_parse_infusion_datetime", - "crud_pilot_application_prepare_infusion_plan_payload", - "crud_pilot_application_py", - "crud_pilot_application_release_application_no_for_soft_delete", - "crud_pilot_application_resolve_application_attachment_payload", - "crud_pilot_application_row_to_dict_application", - "crud_pilot_application_row_to_dict_infusion_plan", - "crud_pilot_application_row_to_dict_infusion_schedule", - "crud_pilot_application_row_to_dict_patient", - "crud_pilot_application_row_to_dict_schedule_product", - "crud_pilot_application_save_application_infusion", - "crud_pilot_application_save_patient", - "crud_pilot_application_schedule_deletable", - "crud_pilot_application_schedule_has_blocking_links", - "crud_pilot_application_schedule_infusion_editable", - "crud_pilot_application_schedule_locked", - "crud_pilot_application_soft_delete_application", - "crud_pilot_application_soft_delete_infusion_plan", - "crud_pilot_application_soft_delete_schedule", - "crud_pilot_application_start_application", - "crud_pilot_application_update_application", - "crud_pilot_application_update_infusion_plan", - "crud_pilot_application_update_schedule", - "crud_pilot_application_update_schedule_editable", - "crud_pilot_application_update_schedule_order_only", - "crud_pilot_application_upsert_application_infusion", - "crud_pilot_application_upsert_schedule_products", - "crud_pilot_application_void_application", - "crud_pilot_checkup_batch_create_checkups", - "crud_pilot_checkup_create_checkup", - "crud_pilot_checkup_delete_actual_item", - "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", - "crud_pilot_checkup_list_pending_patients", - "crud_pilot_checkup_list_reserve_items", - "crud_pilot_checkup_mark_checkup_checked", - "crud_pilot_checkup_parse_optional_datetime", - "crud_pilot_checkup_py", - "crud_pilot_checkup_remove_checkup_for_patient", - "crud_pilot_checkup_row_to_dict_actual_item", - "crud_pilot_checkup_row_to_dict_checkup", - "crud_pilot_checkup_row_to_dict_reserve_item", - "crud_pilot_checkup_save_actual_items", - "crud_pilot_checkup_save_reserve_items", - "crud_pilot_checkup_settle_checkup_fee", - "crud_pilot_checkup_soft_delete_checkup", - "crud_pilot_checkup_update_checkup", - "crud_pilot_delivery_create_delivery", - "crud_pilot_delivery_delete_delivery_material", - "crud_pilot_delivery_generate_delivery_no", - "crud_pilot_delivery_get_delivery_by_schedule", - "crud_pilot_delivery_get_delivery_method", - "crud_pilot_delivery_list_deliveries_by_application", - "crud_pilot_delivery_list_delivery_materials", - "crud_pilot_delivery_py", - "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_schedule_mgmt", - "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", - "crud_pilot_outbound_status_sync_py", - "crud_pilot_outbound_status_sync_sync_pilot_outbound_from_schedule", - "crud_pilot_outbound_status_sync_sync_production_work_order_from_schedule", - "crud_pilot_outbound_status_sync_sync_qc_work_order_from_schedule", - "crud_pilot_outbound_status_sync_sync_schedule_from_production_work_order", - "crud_pilot_outbound_status_sync_sync_schedule_from_qc_work_order", - "crud_pilot_outbound_status_sync_touch", - "crud_production_work_order_enrich_outbound_items", - "crud_qc_work_order_create_outbound_qc_work_order", - "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" - ], - "8": [ - "crud_material_code_exists", - "crud_material_create_material", - "crud_material_dec", - "crud_material_fmt_dt", - "crud_material_get_material", - "crud_material_get_material_entity", - "crud_material_is_enabled_status", - "crud_material_list_materials", - "crud_material_norm_status", - "crud_material_options_list", - "crud_material_py", - "crud_material_row_to_dict", - "crud_material_soft_delete_material", - "crud_material_stock_batch_batch_discard", - "crud_material_stock_batch_batch_options", - "crud_material_stock_batch_batch_row_to_dict", - "crud_material_stock_batch_batch_stock_in", - "crud_material_stock_batch_batch_stock_out", - "crud_material_stock_batch_create_batch_and_usage", - "crud_material_stock_batch_delete_batch", - "crud_material_stock_batch_discard_batch", - "crud_material_stock_batch_fmt_date", - "crud_material_stock_batch_get_batch", - "crud_material_stock_batch_get_material_for_update", - "crud_material_stock_batch_list_batches", - "crud_material_stock_batch_parse_date", - "crud_material_stock_batch_parse_expire_date", - "crud_material_stock_batch_py", - "crud_material_stock_batch_require_decimal", - "crud_material_stock_batch_require_str", - "crud_material_stock_batch_stock_in_no_exists", - "crud_material_stock_batch_stock_in_one", - "crud_material_stock_batch_stock_out_batch", - "crud_material_stock_batch_update_batch", - "crud_material_stock_batch_usage_batch_snapshots", - "crud_material_stock_batch_validate_discard_reason", - "crud_material_stock_check_batch_line_to_dict", - "crud_material_stock_check_cancel_check", - "crud_material_stock_check_check_header_to_dict", - "crud_material_stock_check_create_check", - "crud_material_stock_check_get_check", - "crud_material_stock_check_get_check_detail", - "crud_material_stock_check_line_counts", - "crud_material_stock_check_list_checks", - "crud_material_stock_check_parse_check_time", - "crud_material_stock_check_parse_optional_date", - "crud_material_stock_check_py", - "crud_material_stock_check_save_unused_lines", - "crud_material_stock_check_status_label", - "crud_material_stock_check_unused_amount", - "crud_material_stock_check_unused_line_to_dict", - "crud_material_stock_check_user_nick_name_map", - "crud_material_update_material", - "crud_material_update_material_fields", - "crud_production_material_formula_get_configured_material", - "crud_production_material_formula_get_formula", - "crud_production_material_formula_line_to_dict", - "crud_production_material_formula_py", - "crud_production_material_formula_replace_formula", - "crud_production_material_prep_cancel_prep", - "crud_production_material_prep_complete_prep", - "crud_production_material_prep_create_prep", - "crud_production_material_prep_delete_prep", - "crud_production_material_prep_fmt_date", - "crud_production_material_prep_generate_prep_no", - "crud_production_material_prep_generate_stock_in_no", - "crud_production_material_prep_get_prep_detail", - "crud_production_material_prep_get_prep_row", - "crud_production_material_prep_header_to_dict", - "crud_production_material_prep_line_to_dict", - "crud_production_material_prep_list_preps", - "crud_production_material_prep_parse_prep_lines", - "crud_production_material_prep_py", - "crud_production_material_prep_require_draft", - "crud_production_material_prep_status_label", - "crud_production_material_prep_update_prep", - "crud_production_material_prep_user_nick_name_map", - "crud_production_material_prep_validate_requisition", - "crud_production_material_prep_write_prep_consume_usage", - "crud_production_material_stock_batch_batch_discard", - "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", - "crud_production_material_stock_batch_fmt_date", - "crud_production_material_stock_batch_get_batch", - "crud_production_material_stock_batch_get_material_for_update", - "crud_production_material_stock_batch_list_batches", - "crud_production_material_stock_batch_optional_str", - "crud_production_material_stock_batch_parse_date", - "crud_production_material_stock_batch_parse_expire_date", - "crud_production_material_stock_batch_py", - "crud_production_material_stock_batch_require_decimal", - "crud_production_material_stock_batch_require_str", - "crud_production_material_stock_batch_stock_in_no_exists", - "crud_production_material_stock_batch_stock_in_one", - "crud_production_material_stock_batch_stock_out_batch", - "crud_production_material_stock_batch_update_batch", - "crud_production_material_stock_batch_usage_batch_snapshots", - "crud_production_material_stock_batch_validate_discard_reason", - "crud_production_material_stock_check_batch_line_to_dict", - "crud_production_material_stock_check_cancel_check", - "crud_production_material_stock_check_check_header_to_dict", - "crud_production_material_stock_check_complete_check", - "crud_production_material_stock_check_create_check", - "crud_production_material_stock_check_get_check", - "crud_production_material_stock_check_get_check_detail", - "crud_production_material_stock_check_line_counts", - "crud_production_material_stock_check_list_checks", - "crud_production_material_stock_check_parse_check_time", - "crud_production_material_stock_check_parse_optional_date", - "crud_production_material_stock_check_py", - "crud_production_material_stock_check_save_unused_lines", - "crud_production_material_stock_check_status_label", - "crud_production_material_stock_check_unused_amount", - "crud_production_material_stock_check_unused_line_to_dict", - "crud_production_material_stock_check_user_nick_name_map", - "crud_qc_material_build_manual_out_remark", - "crud_qc_material_code_exists", - "crud_qc_material_create_material", - "crud_qc_material_dec", - "crud_qc_material_fmt_dt", - "crud_qc_material_get_material", - "crud_qc_material_is_enabled_status", - "crud_qc_material_list_materials", - "crud_qc_material_norm_status", - "crud_qc_material_py", - "crud_qc_material_rationale_26", - "crud_qc_material_row_to_dict", - "crud_qc_material_soft_delete_material", - "crud_qc_material_stock_batch_batch_options", - "crud_qc_material_stock_batch_batch_stock_in", - "crud_qc_material_stock_batch_batch_stock_out", - "crud_qc_material_stock_batch_create_batch_and_usage", - "crud_qc_material_stock_batch_delete_batch", - "crud_qc_material_stock_batch_discard_batch", - "crud_qc_material_stock_batch_fmt_date", - "crud_qc_material_stock_batch_get_batch", - "crud_qc_material_stock_batch_get_material_for_update", - "crud_qc_material_stock_batch_parse_date", - "crud_qc_material_stock_batch_parse_expire_date", - "crud_qc_material_stock_batch_py", - "crud_qc_material_stock_batch_require_decimal", - "crud_qc_material_stock_batch_require_str", - "crud_qc_material_stock_batch_stock_in_no_exists", - "crud_qc_material_stock_batch_stock_in_one", - "crud_qc_material_stock_batch_stock_out_batch", - "crud_qc_material_stock_batch_update_batch", - "crud_qc_material_stock_batch_usage_batch_snapshots", - "crud_qc_material_stock_batch_validate_discard_reason", - "crud_qc_material_stock_check_batch_line_to_dict", - "crud_qc_material_stock_check_cancel_check", - "crud_qc_material_stock_check_check_header_to_dict", - "crud_qc_material_stock_check_complete_check", - "crud_qc_material_stock_check_create_check", - "crud_qc_material_stock_check_get_check", - "crud_qc_material_stock_check_get_check_detail", - "crud_qc_material_stock_check_line_counts", - "crud_qc_material_stock_check_list_checks", - "crud_qc_material_stock_check_parse_check_time", - "crud_qc_material_stock_check_parse_optional_date", - "crud_qc_material_stock_check_py", - "crud_qc_material_stock_check_save_unused_lines", - "crud_qc_material_stock_check_status_label", - "crud_qc_material_stock_check_unused_amount", - "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_production_material_bizproductionmaterialprepline", - "models_qc_material_bizqcmaterialstockcheck", - "models_qc_material_bizqcmaterialstockcheckbatchline", - "models_qc_material_bizqcmaterialstockcheckunusedline", - "models_qc_material_py", - "services_protocol_pay_mode_switch_dec", - "services_protocol_pay_mode_switch_py", - "services_protocol_pay_mode_switch_rationale_1", - "services_protocol_pay_mode_switch_validate_payment_details_for_save" - ], - "9": [ "api_workflow_get_designer_data", "app_main_error_json", "app_main_health_check", + "app_main_lifespan", "app_main_mask_secret", "app_main_rationale_81", "app_main_rationale_92", @@ -3208,6 +2916,7 @@ "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", @@ -3215,6 +2924,7 @@ "crud_workflow_get_process_def", "crud_workflow_get_task", "crud_workflow_get_transitions_by_version", + "crud_workflow_list_my_instances", "crud_workflow_list_process_defs", "crud_workflow_list_versions", "crud_workflow_process_code_exists", @@ -3241,16 +2951,353 @@ "services_workflow_engine_parse_node_config", "services_workflow_engine_parse_variables", "services_workflow_engine_py", - "services_workflow_engine_workflowengine", "services_workflow_engine_workflowengine_advance", "services_workflow_engine_workflowengine_approve_task", "services_workflow_engine_workflowengine_check_rules", "services_workflow_engine_workflowengine_evaluate_condition", "services_workflow_engine_workflowengine_execute_node", - "services_workflow_engine_workflowengine_init", "services_workflow_engine_workflowengine_reject_task", "services_workflow_engine_workflowengine_resolve_approvers", - "services_workflow_engine_workflowengine_start_process" + "services_workflow_engine_workflowengine_start_process", + "tasks_init_init_scheduled_tasks", + "tasks_init_py", + "tasks_init_shutdown_scheduler" + ], + "8": [ + "api_pilot_application_api_save_application", + "crud_base_crudbase_update", + "crud_collection_protocol_get_protocol_nos_used_in_protocols", + "crud_dict_type_create_dict_type", + "crud_dict_type_dict_type_code_exists", + "crud_dict_type_get_dict_type", + "crud_dict_type_list_dict_types", + "crud_dict_type_py", + "crud_dict_type_rationale_1", + "crud_dict_type_row_to_dict", + "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_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_auto_generate_schedules", + "crud_pilot_application_complete_application", + "crud_pilot_application_create_application", + "crud_pilot_application_create_basic_experiment_sale_schedules", + "crud_pilot_application_create_infusion_plan", + "crud_pilot_application_create_schedule", + "crud_pilot_application_create_schedule_products", + "crud_pilot_application_format_yyyy_mm_dd", + "crud_pilot_application_generate_application_no", + "crud_pilot_application_get_application", + "crud_pilot_application_get_or_create_infusion_plan", + "crud_pilot_application_get_patient_by_application", + "crud_pilot_application_get_schedule_for_plan", + "crud_pilot_application_list_applications", + "crud_pilot_application_list_infusion_plans", + "crud_pilot_application_list_schedules_by_plan", + "crud_pilot_application_mark_schedule_complete", + "crud_pilot_application_normalize_infusion_status_code", + "crud_pilot_application_normalize_yyyymmdd", + "crud_pilot_application_parse_infusion_datetime", + "crud_pilot_application_prepare_infusion_plan_payload", + "crud_pilot_application_py", + "crud_pilot_application_release_application_no_for_soft_delete", + "crud_pilot_application_resolve_application_attachment_payload", + "crud_pilot_application_row_to_dict_application", + "crud_pilot_application_row_to_dict_infusion_plan", + "crud_pilot_application_row_to_dict_infusion_schedule", + "crud_pilot_application_row_to_dict_patient", + "crud_pilot_application_row_to_dict_schedule_product", + "crud_pilot_application_save_application_infusion", + "crud_pilot_application_save_patient", + "crud_pilot_application_schedule_deletable", + "crud_pilot_application_schedule_has_blocking_links", + "crud_pilot_application_schedule_infusion_editable", + "crud_pilot_application_schedule_locked", + "crud_pilot_application_soft_delete_application", + "crud_pilot_application_soft_delete_infusion_plan", + "crud_pilot_application_soft_delete_schedule", + "crud_pilot_application_start_application", + "crud_pilot_application_update_application", + "crud_pilot_application_update_infusion_plan", + "crud_pilot_application_update_schedule", + "crud_pilot_application_update_schedule_editable", + "crud_pilot_application_update_schedule_order_only", + "crud_pilot_application_upsert_application_infusion", + "crud_pilot_application_upsert_schedule_products", + "crud_pilot_application_void_application", + "crud_pilot_checkup_batch_create_checkups", + "crud_pilot_checkup_create_checkup", + "crud_pilot_checkup_delete_actual_item", + "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_id", + "crud_pilot_checkup_list_actual_items", + "crud_pilot_checkup_list_checkups_paginated", + "crud_pilot_checkup_list_pending_patients", + "crud_pilot_checkup_list_reserve_items", + "crud_pilot_checkup_mark_checkup_checked", + "crud_pilot_checkup_parse_optional_datetime", + "crud_pilot_checkup_py", + "crud_pilot_checkup_remove_checkup_for_patient", + "crud_pilot_checkup_row_to_dict_actual_item", + "crud_pilot_checkup_row_to_dict_checkup", + "crud_pilot_checkup_row_to_dict_reserve_item", + "crud_pilot_checkup_save_actual_items", + "crud_pilot_checkup_save_reserve_items", + "crud_pilot_checkup_settle_checkup_fee", + "crud_pilot_checkup_soft_delete_checkup", + "crud_pilot_checkup_update_checkup", + "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_pilot_outbound_status_sync_get_schedule", + "crud_pilot_outbound_status_sync_is_pilot_outbound_production", + "crud_pilot_outbound_status_sync_is_pilot_outbound_qc", + "crud_pilot_outbound_status_sync_py", + "crud_pilot_outbound_status_sync_sync_pilot_outbound_from_schedule", + "crud_pilot_outbound_status_sync_sync_production_work_order_from_schedule", + "crud_pilot_outbound_status_sync_sync_qc_work_order_from_schedule", + "crud_pilot_outbound_status_sync_sync_schedule_from_production_work_order", + "crud_pilot_outbound_status_sync_sync_schedule_from_qc_work_order", + "crud_pilot_outbound_status_sync_touch", + "crud_production_work_order_enrich_outbound_items", + "crud_qc_work_order_create_outbound_qc_work_order", + "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_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" + ], + "9": [ + "crud_material_stock_batch_batch_discard", + "crud_material_stock_batch_batch_options", + "crud_material_stock_batch_batch_row_to_dict", + "crud_material_stock_batch_batch_stock_in", + "crud_material_stock_batch_batch_stock_out", + "crud_material_stock_batch_create_batch_and_usage", + "crud_material_stock_batch_delete_batch", + "crud_material_stock_batch_discard_batch", + "crud_material_stock_batch_fmt_date", + "crud_material_stock_batch_get_batch", + "crud_material_stock_batch_get_material_for_update", + "crud_material_stock_batch_list_batches", + "crud_material_stock_batch_parse_date", + "crud_material_stock_batch_parse_expire_date", + "crud_material_stock_batch_py", + "crud_material_stock_batch_require_decimal", + "crud_material_stock_batch_require_str", + "crud_material_stock_batch_stock_in_no_exists", + "crud_material_stock_batch_stock_in_one", + "crud_material_stock_batch_stock_out_batch", + "crud_material_stock_batch_update_batch", + "crud_material_stock_batch_usage_batch_snapshots", + "crud_material_stock_batch_validate_discard_reason", + "crud_material_stock_check_batch_line_to_dict", + "crud_material_stock_check_unused_amount", + "crud_material_stock_check_unused_line_to_dict", + "crud_production_material_formula_get_configured_material", + "crud_production_material_formula_get_formula", + "crud_production_material_formula_line_to_dict", + "crud_production_material_formula_py", + "crud_production_material_formula_replace_formula", + "crud_production_material_prep_cancel_prep", + "crud_production_material_prep_complete_prep", + "crud_production_material_prep_create_prep", + "crud_production_material_prep_delete_prep", + "crud_production_material_prep_fmt_date", + "crud_production_material_prep_generate_prep_no", + "crud_production_material_prep_generate_stock_in_no", + "crud_production_material_prep_get_prep_detail", + "crud_production_material_prep_get_prep_row", + "crud_production_material_prep_header_to_dict", + "crud_production_material_prep_line_to_dict", + "crud_production_material_prep_list_preps", + "crud_production_material_prep_parse_prep_lines", + "crud_production_material_prep_py", + "crud_production_material_prep_require_draft", + "crud_production_material_prep_status_label", + "crud_production_material_prep_update_prep", + "crud_production_material_prep_user_nick_name_map", + "crud_production_material_prep_validate_requisition", + "crud_production_material_prep_write_prep_consume_usage", + "crud_production_material_stock_batch_batch_discard", + "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", + "crud_production_material_stock_batch_fmt_date", + "crud_production_material_stock_batch_get_batch", + "crud_production_material_stock_batch_get_material_for_update", + "crud_production_material_stock_batch_list_batches", + "crud_production_material_stock_batch_optional_str", + "crud_production_material_stock_batch_parse_date", + "crud_production_material_stock_batch_parse_expire_date", + "crud_production_material_stock_batch_py", + "crud_production_material_stock_batch_require_decimal", + "crud_production_material_stock_batch_require_str", + "crud_production_material_stock_batch_stock_in_no_exists", + "crud_production_material_stock_batch_stock_in_one", + "crud_production_material_stock_batch_stock_out_batch", + "crud_production_material_stock_batch_update_batch", + "crud_production_material_stock_batch_usage_batch_snapshots", + "crud_production_material_stock_batch_validate_discard_reason", + "crud_production_material_stock_check_batch_line_to_dict", + "crud_production_material_stock_check_cancel_check", + "crud_production_material_stock_check_check_header_to_dict", + "crud_production_material_stock_check_complete_check", + "crud_production_material_stock_check_create_check", + "crud_production_material_stock_check_get_check", + "crud_production_material_stock_check_get_check_detail", + "crud_production_material_stock_check_line_counts", + "crud_production_material_stock_check_list_checks", + "crud_production_material_stock_check_parse_check_time", + "crud_production_material_stock_check_parse_optional_date", + "crud_production_material_stock_check_py", + "crud_production_material_stock_check_save_unused_lines", + "crud_production_material_stock_check_status_label", + "crud_production_material_stock_check_unused_amount", + "crud_production_material_stock_check_unused_line_to_dict", + "crud_production_material_stock_check_user_nick_name_map", + "crud_qc_material_build_manual_out_remark", + "crud_qc_material_code_exists", + "crud_qc_material_create_material", + "crud_qc_material_dec", + "crud_qc_material_fmt_dt", + "crud_qc_material_get_material", + "crud_qc_material_is_enabled_status", + "crud_qc_material_list_materials", + "crud_qc_material_norm_status", + "crud_qc_material_options_list", + "crud_qc_material_py", + "crud_qc_material_rationale_26", + "crud_qc_material_row_to_dict", + "crud_qc_material_soft_delete_material", + "crud_qc_material_stock_batch_batch_stock_in", + "crud_qc_material_stock_batch_batch_stock_out", + "crud_qc_material_stock_batch_create_batch_and_usage", + "crud_qc_material_stock_batch_delete_batch", + "crud_qc_material_stock_batch_discard_batch", + "crud_qc_material_stock_batch_get_batch", + "crud_qc_material_stock_batch_get_material_for_update", + "crud_qc_material_stock_batch_parse_date", + "crud_qc_material_stock_batch_parse_expire_date", + "crud_qc_material_stock_batch_py", + "crud_qc_material_stock_batch_require_decimal", + "crud_qc_material_stock_batch_require_str", + "crud_qc_material_stock_batch_stock_in_no_exists", + "crud_qc_material_stock_batch_stock_in_one", + "crud_qc_material_stock_batch_stock_out_batch", + "crud_qc_material_stock_batch_update_batch", + "crud_qc_material_stock_batch_usage_batch_snapshots", + "crud_qc_material_stock_batch_validate_discard_reason", + "crud_qc_material_stock_check_batch_line_to_dict", + "crud_qc_material_stock_check_cancel_check", + "crud_qc_material_stock_check_check_header_to_dict", + "crud_qc_material_stock_check_complete_check", + "crud_qc_material_stock_check_create_check", + "crud_qc_material_stock_check_get_check", + "crud_qc_material_stock_check_get_check_detail", + "crud_qc_material_stock_check_line_counts", + "crud_qc_material_stock_check_list_checks", + "crud_qc_material_stock_check_parse_check_time", + "crud_qc_material_stock_check_parse_optional_date", + "crud_qc_material_stock_check_py", + "crud_qc_material_stock_check_save_unused_lines", + "crud_qc_material_stock_check_status_label", + "crud_qc_material_stock_check_unused_amount", + "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_production_material_bizproductionmaterialprepline", + "models_qc_material_bizqcmaterialstockcheck", + "models_qc_material_bizqcmaterialstockcheckbatchline", + "models_qc_material_bizqcmaterialstockcheckunusedline", + "models_qc_material_py", + "services_protocol_pay_mode_switch_dec", + "services_protocol_pay_mode_switch_py", + "services_protocol_pay_mode_switch_rationale_1", + "services_protocol_pay_mode_switch_validate_payment_details_for_save" ], "10": [ "api_public_avatar_url_field", @@ -3262,23 +3309,22 @@ "api_public_logout", "api_public_py", "api_public_rationale_1", - "api_public_rationale_108", - "api_public_rationale_119", - "api_public_rationale_235", - "api_public_rationale_254", - "api_public_rationale_268", - "api_public_rationale_336", - "api_public_rationale_369", - "api_public_rationale_40", - "api_public_rationale_49", - "api_public_rationale_67", + "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", "core_auth_create_access_token", "core_auth_create_refresh_token", "core_auth_decode_token", @@ -3366,13 +3412,12 @@ "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_iter_user_menu_perm_codes", "services_web_auth_roles_map_role_name_to_web", "services_web_auth_roles_py", "services_web_auth_roles_resolve_web_role_for_user", - "tasks_init_init_scheduled_tasks", - "tasks_init_py", - "tasks_init_shutdown_scheduler" + "services_web_auth_roles_user_has_active_roles" ], "11": [ "api_production_get_next_cell_product_code", @@ -3402,6 +3447,7 @@ "crud_cell_product_next_code_start_seq", "crud_cell_product_normalize_product_code_base", "crud_cell_product_product_node", + "crud_cell_product_product_to_response", "crud_cell_product_protocol_sample_chain_node", "crud_cell_product_py", "crud_cell_product_reserve_next_codes", @@ -3427,6 +3473,7 @@ "crud_production_task_clone_step_outputs", "crud_production_task_clone_step_reagents", "crud_production_task_consume_task_input_cell_products", + "crud_production_task_copy_task_step", "crud_production_task_create_occupancy_for_product", "crud_production_task_create_production_task", "crud_production_task_delete_production_task", @@ -3470,6 +3517,10 @@ "crud_storage_occupancy_list_occupancies", "crud_storage_occupancy_list_occupancy_history", "crud_storage_occupancy_py", + "crud_storage_occupancy_rationale_1", + "crud_storage_occupancy_rationale_174", + "crud_storage_occupancy_rationale_316", + "crud_storage_occupancy_rationale_43", "crud_storage_occupancy_refresh_slot_cache", "crud_storage_occupancy_remove_by_item", "crud_storage_occupancy_remove_by_item_no_commit", @@ -3477,135 +3528,6 @@ "crud_storage_occupancy_row_to_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_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": [ - "crud_biz_no_generator_allocate_next_biz_no", - "crud_biz_no_generator_format_biz_no", - "crud_biz_no_generator_prefix_for", - "crud_biz_no_generator_py", - "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", - "crud_research_donation_create_donation", - "crud_research_donation_create_party", - "crud_research_donation_create_samples", - "crud_research_donation_create_transport", - "crud_research_donation_dec", - "crud_research_donation_delete_donation", - "crud_research_donation_fmt_dt", - "crud_research_donation_get_collection", - "crud_research_donation_get_donation_detail", - "crud_research_donation_get_party", - "crud_research_donation_list_audits", - "crud_research_donation_list_donations", - "crud_research_donation_list_sample_transports", - "crud_research_donation_list_samples", - "crud_research_donation_merge_comma_separated_urls", - "crud_research_donation_migrate_donation_sample_child_refs_on_replace", - "crud_research_donation_normalize_date_bound", - "crud_research_donation_normalize_fields", - "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", - "crud_research_donation_soft_delete_party", - "crud_research_donation_soft_delete_samples", - "crud_research_donation_soft_delete_transports", - "crud_research_donation_total_pages", - "crud_research_donation_transport_to_dict", - "crud_research_donation_update_donation", - "crud_research_donation_user_nick_name_map" - ], - "14": [ "crud_production_material_batch_stock_in", "crud_production_material_batch_stock_out", "crud_production_material_build_manual_out_remark", @@ -3655,7 +3577,7 @@ "crud_production_material_usage_usage_unit_label", "crud_production_material_usage_user_nick_name_map" ], - "15": [ + "13": [ "crud_cleanroom_garment_batch_create_sterilize_logs", "crud_cleanroom_garment_batch_create_wash_logs", "crud_cleanroom_garment_batch_discard_garments", @@ -3695,12 +3617,13 @@ "models_cleanroom_garment_rationale_54", "models_cleanroom_garment_rationale_9" ], - "16": [ + "14": [ "core_wechat_pay_get_wechat_pay_client", "core_wechat_pay_get_wechat_pay_v2", "core_wechat_pay_py", "core_wechat_pay_rationale_1", "core_wechat_pay_rationale_131", + "core_wechat_pay_rationale_254", "core_wechat_pay_rationale_410", "core_wechat_pay_rationale_443", "core_wechat_pay_rationale_60", @@ -3714,6 +3637,7 @@ "core_wechat_pay_wechatpayclient_init", "core_wechat_pay_wechatpayclient_make_request", "core_wechat_pay_wechatpayclient_query_order", + "core_wechat_pay_wechatpayclient_refund", "core_wechat_pay_wechatpayclient_unified_order", "core_wechat_pay_wechatpayv2client", "core_wechat_pay_wechatpayv2client_build_miniprogram_pay_params", @@ -3726,7 +3650,111 @@ "core_wechat_pay_wechatpayv2client_unified_order", "core_wechat_pay_wechatpayv2client_xml_to_dict" ], + "15": [ + "api_production_set_current_process_route", + "crud_process_route_add_step", + "crud_process_route_copy_step", + "crud_process_route_create_route", + "crud_process_route_create_step_consumable", + "crud_process_route_create_step_data_collection", + "crud_process_route_create_step_output", + "crud_process_route_create_step_reagent", + "crud_process_route_get_route", + "crud_process_route_get_route_detail", + "crud_process_route_list_routes", + "crud_process_route_py", + "crud_process_route_reorder_steps", + "crud_process_route_route_row_to_dict", + "crud_process_route_set_current_route", + "crud_process_route_soft_delete_route", + "crud_process_route_soft_delete_step", + "crud_process_route_soft_delete_sub_records", + "crud_process_route_step_consumable_row_to_dict", + "crud_process_route_step_data_collection_row_to_dict", + "crud_process_route_step_output_row_to_dict", + "crud_process_route_step_reagent_row_to_dict", + "crud_process_route_step_row_to_dict", + "crud_process_route_total_pages", + "crud_process_route_update_route", + "crud_process_route_update_step_consumables", + "crud_process_route_update_step_data_collections", + "crud_process_route_update_step_outputs", + "crud_process_route_update_step_reagents" + ], + "16": [ + "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_list_linked_task_usages", + "crud_qc_material_usage_list_my_usages", + "crud_qc_material_usage_list_requisition_options", + "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_unit_price_for_row", + "crud_qc_material_usage_usage_unit_label", + "crud_qc_material_usage_user_nick_name_map" + ], "17": [ + "crud_clean_room_access_log_to_dict", + "crud_clean_room_calc_duration_minutes", + "crud_clean_room_create_access_log", + "crud_clean_room_create_clean_room", + "crud_clean_room_create_uv_disinfect_log", + "crud_clean_room_get_access_log", + "crud_clean_room_get_clean_room", + "crud_clean_room_get_uv_disinfect_log", + "crud_clean_room_list_access_logs", + "crud_clean_room_list_clean_rooms", + "crud_clean_room_list_uv_disinfect_logs", + "crud_clean_room_py", + "crud_clean_room_room_code_exists", + "crud_clean_room_row_to_dict", + "crud_clean_room_soft_delete_access_log", + "crud_clean_room_soft_delete_clean_room", + "crud_clean_room_soft_delete_uv_disinfect_log", + "crud_clean_room_total_pages", + "crud_clean_room_update_access_log", + "crud_clean_room_update_clean_room", + "crud_clean_room_update_uv_disinfect_log", + "crud_clean_room_uv_disinfect_log_to_dict" + ], + "18": [ + "crud_process_consumable_row_to_dict", + "crud_process_create_process", + "crud_process_create_sub_consumable", + "crud_process_create_sub_data_collection", + "crud_process_create_sub_output", + "crud_process_create_sub_reagent", + "crud_process_data_collection_row_to_dict", + "crud_process_get_process", + "crud_process_get_process_detail", + "crud_process_list_all_processes", + "crud_process_list_processes", + "crud_process_output_row_to_dict", + "crud_process_process_code_exists", + "crud_process_py", + "crud_process_reagent_row_to_dict", + "crud_process_row_to_dict", + "crud_process_soft_delete_process", + "crud_process_soft_delete_sub_records", + "crud_process_sub_item_with_order", + "crud_process_total_pages", + "crud_process_update_process" + ], + "19": [ "crud_qc_third_party_company_company_code_exists", "crud_qc_third_party_company_create_company", "crud_qc_third_party_company_get_company", @@ -3748,26 +3776,7 @@ "crud_qc_third_party_item_soft_delete_item", "crud_qc_third_party_item_update_item" ], - "18": [ - "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_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" - ], - "19": [ + "20": [ "crud_material_usage_amount_for_row", "crud_material_usage_batch_map", "crud_material_usage_display_remark", @@ -3784,23 +3793,24 @@ "crud_material_usage_usage_unit_label", "crud_material_usage_user_nick_name_map" ], - "20": [ - "crud_sample_code_batch_generate_sample_codes", - "crud_sample_code_batch_issue_sample_codes", - "crud_sample_code_batch_revoke_sample_codes", - "crud_sample_code_create_sample_code", - "crud_sample_code_get_sample_code", - "crud_sample_code_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_sample_code_exists", - "crud_sample_code_soft_delete_sample_code", - "crud_sample_code_total_pages", - "crud_sample_code_update_sample_code" - ], "21": [ + "crud_material_code_exists", + "crud_material_create_material", + "crud_material_dec", + "crud_material_fmt_dt", + "crud_material_get_material", + "crud_material_get_material_entity", + "crud_material_is_enabled_status", + "crud_material_list_materials", + "crud_material_norm_status", + "crud_material_options_list", + "crud_material_py", + "crud_material_row_to_dict", + "crud_material_soft_delete_material", + "crud_material_update_material", + "crud_material_update_material_fields" + ], + "22": [ "core_wechat_message_py", "core_wechat_message_rationale_1", "core_wechat_message_rationale_86", @@ -3815,7 +3825,22 @@ "core_wechat_message_wechatmessageservice_init", "core_wechat_message_wechatmessageservice_send_template_message" ], - "22": [ + "23": [ + "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" + ], + "24": [ "crud_equipment_create_equipment", "crud_equipment_dec", "crud_equipment_equipment_code_exists", @@ -3830,7 +3855,22 @@ "crud_equipment_total_pages", "crud_equipment_update_equipment" ], - "23": [ + "25": [ + "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" + ], + "26": [ "crud_exhibition_appointment_appointment_no_exists", "crud_exhibition_appointment_create_exhibition_appointment", "crud_exhibition_appointment_format_visit_date", @@ -3845,21 +3885,7 @@ "crud_exhibition_appointment_soft_delete_exhibition_appointment", "crud_exhibition_appointment_update_exhibition_appointment" ], - "24": [ - "crud_reagent_stock_log_deduct_for_step", - "crud_reagent_stock_log_display_remark", - "crud_reagent_stock_log_list_stock_logs", - "crud_reagent_stock_log_parse_receiver_purpose_from_remark", - "crud_reagent_stock_log_py", - "crud_reagent_stock_log_rationale_1", - "crud_reagent_stock_log_rationale_164", - "crud_reagent_stock_log_rationale_216", - "crud_reagent_stock_log_resolve_receiver_purpose", - "crud_reagent_stock_log_revert_step_stock_changes", - "crud_reagent_stock_log_row_to_dict", - "crud_reagent_stock_log_user_nick_name_map" - ], - "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", @@ -3873,7 +3899,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", @@ -3887,7 +3913,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", @@ -3901,20 +3927,20 @@ "crud_dept_soft_delete_dept", "crud_dept_update_dept" ], - "28": [ - "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": [ + "crud_menu_build_tree", + "crud_menu_cascade_soft_delete", + "crud_menu_create_menu", + "crud_menu_get_menu", + "crud_menu_list_menus", + "crud_menu_list_menus_tree", + "crud_menu_menu_name_exists", + "crud_menu_py", + "crud_menu_row_to_dict", + "crud_menu_soft_delete_menu", + "crud_menu_update_menu" ], - "29": [ + "31": [ "crud_sop_document_create_sop_document", "crud_sop_document_get_sop_document", "crud_sop_document_list_sop_documents", @@ -3926,7 +3952,7 @@ "crud_sop_document_total_pages", "crud_sop_document_update_sop_document" ], - "30": [ + "32": [ "crud_express_company_create_express_company", "crud_express_company_express_code_exists", "crud_express_company_get_express_company", @@ -3938,7 +3964,7 @@ "crud_express_company_total_pages", "crud_express_company_update_express_company" ], - "31": [ + "33": [ "crud_sample_reception_check_item_create_check_item", "crud_sample_reception_check_item_get_check_item", "crud_sample_reception_check_item_item_code_exists", @@ -3950,7 +3976,7 @@ "crud_sample_reception_check_item_soft_delete_check_item", "crud_sample_reception_check_item_update_check_item" ], - "32": [ + "34": [ "crud_dict_data_create_dict_data", "crud_dict_data_get_dict_data", "crud_dict_data_list_dict_data", @@ -3962,7 +3988,7 @@ "crud_dict_data_total_pages", "crud_dict_data_update_dict_data" ], - "33": [ + "35": [ "crud_env_detect_item_create_env_detect_item", "crud_env_detect_item_get_env_detect_item", "crud_env_detect_item_item_code_exists", @@ -3974,7 +4000,7 @@ "crud_env_detect_item_soft_delete_env_detect_item", "crud_env_detect_item_update_env_detect_item" ], - "34": [ + "36": [ "crud_process_category_category_code_exists", "crud_process_category_create_process_category", "crud_process_category_get_process_category", @@ -3986,7 +4012,7 @@ "crud_process_category_total_pages", "crud_process_category_update_process_category" ], - "35": [ + "37": [ "crud_item_unit_create_item_unit", "crud_item_unit_get_item_unit", "crud_item_unit_list_item_units", @@ -3998,7 +4024,7 @@ "crud_item_unit_unit_code_exists", "crud_item_unit_update_item_unit" ], - "36": [ + "38": [ "crud_cell_sample_type_create_cell_sample_type", "crud_cell_sample_type_get_cell_sample_type", "crud_cell_sample_type_list_cell_sample_types", @@ -4010,7 +4036,7 @@ "crud_cell_sample_type_type_code_exists", "crud_cell_sample_type_update_cell_sample_type" ], - "37": [ + "39": [ "crud_output_type_create_output_type", "crud_output_type_get_output_type", "crud_output_type_list_output_types", @@ -4022,18 +4048,7 @@ "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" - ], - "39": [ + "40": [ "crud_tenant_create_tenant", "crud_tenant_get_tenant", "crud_tenant_list_tenants", @@ -4044,17 +4059,6 @@ "crud_tenant_total_pages", "crud_tenant_update_tenant" ], - "40": [ - "crud_menu_cascade_soft_delete", - "crud_menu_create_menu", - "crud_menu_get_menu", - "crud_menu_list_menus", - "crud_menu_menu_name_exists", - "crud_menu_py", - "crud_menu_row_to_dict", - "crud_menu_soft_delete_menu", - "crud_menu_update_menu" - ], "41": [ "core_menu_guard_py", "core_menu_guard_rationale_1", @@ -4149,45 +4153,45 @@ "cohesion": { "0": 0.01, "1": 0.01, - "2": 0.09, - "3": 0.02, + "2": 0.08, + "3": 0.01, "4": 0.02, - "5": 0.02, - "6": 0.07, + "5": 0.04, + "6": 0.05, "7": 0.02, - "8": 0.03, - "9": 0.02, + "8": 0.02, + "9": 0.03, "10": 0.03, "11": 0.04, - "12": 0.36, - "13": 0.09, - "14": 0.09, - "15": 0.11, - "16": 0.12, - "17": 0.18, + "12": 0.09, + "13": 0.11, + "14": 0.12, + "15": 0.16, + "16": 0.21, + "17": 0.15, "18": 0.21, - "19": 0.29, - "20": 0.25, - "21": 0.24, - "22": 0.29, - "23": 0.24, - "24": 0.24, - "25": 0.32, + "19": 0.18, + "20": 0.29, + "21": 0.28, + "22": 0.24, + "23": 0.23, + "24": 0.29, + "25": 0.27, "26": 0.24, - "27": 0.27, - "28": 0.27, - "29": 0.31, - "30": 0.31, - "31": 0.38, - "32": 0.27, + "27": 0.32, + "28": 0.24, + "29": 0.27, + "30": 0.29, + "31": 0.31, + "32": 0.31, "33": 0.38, - "34": 0.31, - "35": 0.31, + "34": 0.27, + "35": 0.38, "36": 0.31, "37": 0.31, - "38": 0.36, - "39": 0.36, - "40": 0.33, + "38": 0.31, + "39": 0.31, + "40": 0.36, "41": 0.25, "42": 0.29, "43": 0.38, @@ -4284,17 +4288,6 @@ "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": "\u4e2d\u8bd5\u670d\u52a1\u4f53\u68c0\u7ba1\u7406 API\uff08\u4f53\u68c0\u4fe1\u606f\u3001\u9884\u7ea6\u9879\u76ee\u3001\u5b9e\u9645\u9879\u76ee\uff09", - "target": "SysUser", - "source_files": [ - "api/pilot_checkup.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 `\u4e2d\u8bd5\u670d\u52a1\u4f53\u68c0\u7ba1\u7406 API\uff08\u4f53\u68c0\u4fe1\u606f\u3001\u9884\u7ea6\u9879\u76ee\u3001\u5b9e\u9645\u9879\u76ee\uff09` unexpectedly reaches hub `SysUser`" - }, { "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", @@ -4316,6 +4309,17 @@ "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 a5daf2f8..4b6be06d 100644 --- a/backend/graphify-out/.graphify_extract.json +++ b/backend/graphify-out/.graphify_extract.json @@ -20613,98 +20613,98 @@ "label": "_avatar_url_field()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L39" + "source_location": "L43" }, { "id": "api_public_build_user_info_payload", "label": "_build_user_info_payload()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L48" + "source_location": "L52" }, { "id": "api_public_build_current_user_payload", "label": "_build_current_user_payload()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L66" + "source_location": "L70" }, { "id": "api_public_resolve_current_user_from_request", "label": "_resolve_current_user_from_request()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L88" + "source_location": "L92" }, { "id": "api_public_jwt_user_payload", "label": "_jwt_user_payload()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L96" + "source_location": "L100" }, { "id": "api_public_web_login_rsa_public_key", "label": "web_login_rsa_public_key()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L107" + "source_location": "L111" }, { "id": "api_public_web_login", "label": "web_login()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L114" + "source_location": "L118" }, { "id": "api_public_refresh_token", "label": "refresh_token()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L172" + "source_location": "L179" }, { "id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L234" + "source_location": "L241" }, { "id": "api_public_get_current_user_profile", "label": "get_current_user_profile()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L253" + "source_location": "L260" }, { "id": "api_public_update_current_user_profile", "label": "update_current_user_profile()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L263" + "source_location": "L270" }, { "id": "api_public_change_current_user_password", "label": "change_current_user_password()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L299" + "source_location": "L306" }, { "id": "api_public_upload_current_user_avatar", "label": "upload_current_user_avatar()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L331" + "source_location": "L338" }, { "id": "api_public_get_web_auth_menu_codes", "label": "get_web_auth_menu_codes()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L368" + "source_location": "L375" }, { "id": "api_public_rationale_1", @@ -20714,74 +20714,74 @@ "source_location": "L1" }, { - "id": "api_public_rationale_40", + "id": "api_public_rationale_44", "label": "\u8fd4\u56de\u5e93\u4e2d\u539f\u59cb\u5934\u50cf\u8def\u5f84\uff0c\u7531\u524d\u7aef\u6309 VITE_MINIO_BASE_URL \u62fc\u5c55\u793a URL\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L40" + "source_location": "L44" }, { - "id": "api_public_rationale_49", + "id": "api_public_rationale_53", "label": "\u4e0e web-admin `userInfo` \u5b57\u6bb5\u7ea6\u5b9a\u4e00\u81f4\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L49" + "source_location": "L53" }, { - "id": "api_public_rationale_67", + "id": "api_public_rationale_71", "label": "\u7ec4\u88c5 current-user \u63a5\u53e3\u54cd\u5e94\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L67" + "source_location": "L71" }, { - "id": "api_public_rationale_108", + "id": "api_public_rationale_112", "label": "Web \u7aef\u767b\u5f55\u7528 RSA \u516c\u94a5\uff08PKCS#1 v1.5\uff0c\u4e0e JSEncrypt \u4e00\u81f4\uff09", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L108" + "source_location": "L112" }, { - "id": "api_public_rationale_119", + "id": "api_public_rationale_123", "label": "Web \u7aef\u767b\u5f55\uff1a\u8d26\u53f7\u4e3a sys_user.user_no\uff0c\u5bc6\u7801\u4e3a sys_user.password\uff08bcrypt\uff09\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L119" + "source_location": "L123" }, { - "id": "api_public_rationale_235", + "id": "api_public_rationale_242", "label": "\u767b\u51fa\uff1a\u540a\u9500 Redis \u4f1a\u8bdd\uff08\u82e5\u5df2\u914d\u7f6e REDIS_HOST\uff09\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L235" + "source_location": "L242" }, { - "id": "api_public_rationale_254", + "id": "api_public_rationale_261", "label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237\u4fe1\u606f\uff08\u4e0e sys_user \u5b57\u6bb5\u5bf9\u5e94\uff09\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L254" + "source_location": "L261" }, { - "id": "api_public_rationale_268", + "id": "api_public_rationale_275", "label": "\u5f53\u524d\u7528\u6237\u66f4\u65b0\u4e2a\u4eba\u4fe1\u606f\uff08\u624b\u673a\u53f7\u3001\u90ae\u7bb1\u3001\u6027\u522b\u3001\u5907\u6ce8\uff09\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L268" + "source_location": "L275" }, { - "id": "api_public_rationale_336", + "id": "api_public_rationale_343", "label": "\u5f53\u524d\u7528\u6237\u4e0a\u4f20\u5934\u50cf\uff08\u4ec5\u56fe\u7247\uff0c\u6700\u5927 2MB\uff09\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L336" + "source_location": "L343" }, { - "id": "api_public_rationale_369", + "id": "api_public_rationale_376", "label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237\u83dc\u5355\u6743\u9650\u6807\u8bc6\uff08sys_menu.perms\uff0c\u7ecf\u89d2\u8272\u7ee7\u627f\uff09\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L369" + "source_location": "L376" }, { "id": "api_material_py", @@ -28474,21 +28474,35 @@ "label": "_map_role_name_to_web()", "file_type": "code", "source_file": "services/web_auth_roles.py", - "source_location": "L16" + "source_location": "L19" + }, + { + "id": "services_web_auth_roles_active_role_name_rows", + "label": "_active_role_name_rows()", + "file_type": "code", + "source_file": "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": "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": "services/web_auth_roles.py", - "source_location": "L28" + "source_location": "L58" }, { "id": "services_web_auth_roles_iter_user_menu_perm_codes", "label": "iter_user_menu_perm_codes()", "file_type": "code", "source_file": "services/web_auth_roles.py", - "source_location": "L56" + "source_location": "L69" }, { "id": "services_web_auth_roles_rationale_1", @@ -28498,25 +28512,39 @@ "source_location": "L1" }, { - "id": "services_web_auth_roles_rationale_17", + "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": "services/web_auth_roles.py", - "source_location": "L17" + "source_location": "L20" }, { - "id": "services_web_auth_roles_rationale_29", - "label": "\u6839\u636e\u7528\u6237\u5173\u8054\u89d2\u8272\u89e3\u6790 Web \u7aef role\uff08admin / super_admin\uff09\u3002", + "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": "services/web_auth_roles.py", - "source_location": "L29" + "source_location": "L32" }, { - "id": "services_web_auth_roles_rationale_57", + "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": "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": "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\u4e00\u7ea7\u83dc\u5355\uff08market\u3001production\u3001quali", "file_type": "rationale", "source_file": "services/web_auth_roles.py", - "source_location": "L57" + "source_location": "L70" }, { "id": "services_protocol_payment_installment_py", @@ -82688,7 +82716,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 1.0 }, { @@ -82697,7 +82725,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L34", + "source_location": "L38", "weight": 1.0 }, { @@ -82706,7 +82734,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L39", + "source_location": "L43", "weight": 1.0 }, { @@ -82715,7 +82743,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L48", + "source_location": "L52", "weight": 1.0 }, { @@ -82724,7 +82752,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L66", + "source_location": "L70", "weight": 1.0 }, { @@ -82733,7 +82761,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L88", + "source_location": "L92", "weight": 1.0 }, { @@ -82742,7 +82770,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L96", + "source_location": "L100", "weight": 1.0 }, { @@ -82751,7 +82779,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L107", + "source_location": "L111", "weight": 1.0 }, { @@ -82760,7 +82788,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L114", + "source_location": "L118", "weight": 1.0 }, { @@ -82769,7 +82797,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L172", + "source_location": "L179", "weight": 1.0 }, { @@ -82778,7 +82806,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L234", + "source_location": "L241", "weight": 1.0 }, { @@ -82787,7 +82815,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L253", + "source_location": "L260", "weight": 1.0 }, { @@ -82796,7 +82824,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L263", + "source_location": "L270", "weight": 1.0 }, { @@ -82805,7 +82833,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L299", + "source_location": "L306", "weight": 1.0 }, { @@ -82814,7 +82842,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L331", + "source_location": "L338", "weight": 1.0 }, { @@ -82823,7 +82851,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L368", + "source_location": "L375", "weight": 1.0 }, { @@ -82832,7 +82860,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L62", + "source_location": "L66", "weight": 1.0 }, { @@ -82841,7 +82869,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L144", + "source_location": "L151", "weight": 1.0 }, { @@ -82850,7 +82878,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L166", + "source_location": "L173", "weight": 1.0 }, { @@ -82859,7 +82887,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L206", + "source_location": "L213", "weight": 1.0 }, { @@ -82868,7 +82896,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L256", + "source_location": "L263", "weight": 1.0 }, { @@ -82877,7 +82905,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L257", + "source_location": "L264", "weight": 1.0 }, { @@ -82886,7 +82914,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L270", + "source_location": "L277", "weight": 1.0 }, { @@ -82895,7 +82923,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L291", + "source_location": "L298", "weight": 1.0 }, { @@ -82904,7 +82932,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L306", + "source_location": "L313", "weight": 1.0 }, { @@ -82913,7 +82941,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L338", + "source_location": "L345", "weight": 1.0 }, { @@ -82926,93 +82954,93 @@ "weight": 1.0 }, { - "source": "api_public_rationale_40", + "source": "api_public_rationale_44", "target": "api_public_avatar_url_field", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L40", + "source_location": "L44", "weight": 1.0 }, { - "source": "api_public_rationale_49", + "source": "api_public_rationale_53", "target": "api_public_build_user_info_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L49", + "source_location": "L53", "weight": 1.0 }, { - "source": "api_public_rationale_67", + "source": "api_public_rationale_71", "target": "api_public_build_current_user_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L67", + "source_location": "L71", "weight": 1.0 }, { - "source": "api_public_rationale_108", + "source": "api_public_rationale_112", "target": "api_public_web_login_rsa_public_key", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L108", + "source_location": "L112", "weight": 1.0 }, { - "source": "api_public_rationale_119", + "source": "api_public_rationale_123", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L119", + "source_location": "L123", "weight": 1.0 }, { - "source": "api_public_rationale_235", + "source": "api_public_rationale_242", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L235", + "source_location": "L242", "weight": 1.0 }, { - "source": "api_public_rationale_254", + "source": "api_public_rationale_261", "target": "api_public_get_current_user_profile", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L254", + "source_location": "L261", "weight": 1.0 }, { - "source": "api_public_rationale_268", + "source": "api_public_rationale_275", "target": "api_public_update_current_user_profile", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L268", + "source_location": "L275", "weight": 1.0 }, { - "source": "api_public_rationale_336", + "source": "api_public_rationale_343", "target": "api_public_upload_current_user_avatar", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L336", + "source_location": "L343", "weight": 1.0 }, { - "source": "api_public_rationale_369", + "source": "api_public_rationale_376", "target": "api_public_get_web_auth_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L369", + "source_location": "L376", "weight": 1.0 }, { @@ -103991,7 +104019,25 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "services/web_auth_roles.py", - "source_location": "L16", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "services_web_auth_roles_py", + "target": "services_web_auth_roles_active_role_name_rows", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "services/web_auth_roles.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "services_web_auth_roles_py", + "target": "services_web_auth_roles_user_has_active_roles", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "services/web_auth_roles.py", + "source_location": "L53", "weight": 1.0 }, { @@ -104000,7 +104046,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "services/web_auth_roles.py", - "source_location": "L28", + "source_location": "L58", "weight": 1.0 }, { @@ -104009,7 +104055,25 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "services/web_auth_roles.py", - "source_location": "L56", + "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": "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": "services/web_auth_roles.py", + "source_location": "L60", "weight": 1.0 }, { @@ -104018,7 +104082,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "services/web_auth_roles.py", - "source_location": "L50", + "source_location": "L63", "weight": 1.0 }, { @@ -104031,30 +104095,48 @@ "weight": 1.0 }, { - "source": "services_web_auth_roles_rationale_17", + "source": "services_web_auth_roles_rationale_20", "target": "services_web_auth_roles_map_role_name_to_web", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "services/web_auth_roles.py", - "source_location": "L17", + "source_location": "L20", "weight": 1.0 }, { - "source": "services_web_auth_roles_rationale_29", + "source": "services_web_auth_roles_rationale_32", + "target": "services_web_auth_roles_active_role_name_rows", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "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": "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": "services/web_auth_roles.py", - "source_location": "L29", + "source_location": "L59", "weight": 1.0 }, { - "source": "services_web_auth_roles_rationale_57", + "source": "services_web_auth_roles_rationale_70", "target": "services_web_auth_roles_iter_user_menu_perm_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "services/web_auth_roles.py", - "source_location": "L57", + "source_location": "L70", "weight": 1.0 }, { @@ -176346,7 +176428,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_40", + "source": "api_public_rationale_44", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176355,7 +176437,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_49", + "source": "api_public_rationale_53", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176364,7 +176446,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_67", + "source": "api_public_rationale_71", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176373,7 +176455,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_108", + "source": "api_public_rationale_112", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176382,7 +176464,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_119", + "source": "api_public_rationale_123", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176391,7 +176473,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_235", + "source": "api_public_rationale_242", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176400,7 +176482,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_254", + "source": "api_public_rationale_261", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176409,7 +176491,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_268", + "source": "api_public_rationale_275", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176418,7 +176500,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_336", + "source": "api_public_rationale_343", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176427,7 +176509,7 @@ "weight": 0.8 }, { - "source": "api_public_rationale_369", + "source": "api_public_rationale_376", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", @@ -176441,97 +176523,97 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_40", + "source": "api_public_rationale_44", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_49", + "source": "api_public_rationale_53", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_67", + "source": "api_public_rationale_71", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_108", + "source": "api_public_rationale_112", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_119", + "source": "api_public_rationale_123", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_235", + "source": "api_public_rationale_242", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_254", + "source": "api_public_rationale_261", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_268", + "source": "api_public_rationale_275", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_336", + "source": "api_public_rationale_343", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { - "source": "api_public_rationale_369", + "source": "api_public_rationale_376", "target": "schemas_auth_profileupdaterequest", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L33", + "source_location": "L37", "weight": 0.8 }, { @@ -191745,7 +191827,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_17", + "source": "services_web_auth_roles_rationale_20", "target": "models_models_sysmenu", "relation": "uses", "confidence": "INFERRED", @@ -191754,7 +191836,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_29", + "source": "services_web_auth_roles_rationale_32", "target": "models_models_sysmenu", "relation": "uses", "confidence": "INFERRED", @@ -191763,7 +191845,25 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_57", + "source": "services_web_auth_roles_rationale_54", + "target": "models_models_sysmenu", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_59", + "target": "models_models_sysmenu", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_70", "target": "models_models_sysmenu", "relation": "uses", "confidence": "INFERRED", @@ -191781,7 +191881,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_17", + "source": "services_web_auth_roles_rationale_20", "target": "models_models_sysrole", "relation": "uses", "confidence": "INFERRED", @@ -191790,7 +191890,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_29", + "source": "services_web_auth_roles_rationale_32", "target": "models_models_sysrole", "relation": "uses", "confidence": "INFERRED", @@ -191799,7 +191899,25 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_57", + "source": "services_web_auth_roles_rationale_54", + "target": "models_models_sysrole", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_59", + "target": "models_models_sysrole", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_70", "target": "models_models_sysrole", "relation": "uses", "confidence": "INFERRED", @@ -191817,7 +191935,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_17", + "source": "services_web_auth_roles_rationale_20", "target": "models_models_sysrolemenu", "relation": "uses", "confidence": "INFERRED", @@ -191826,7 +191944,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_29", + "source": "services_web_auth_roles_rationale_32", "target": "models_models_sysrolemenu", "relation": "uses", "confidence": "INFERRED", @@ -191835,7 +191953,25 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_57", + "source": "services_web_auth_roles_rationale_54", + "target": "models_models_sysrolemenu", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_59", + "target": "models_models_sysrolemenu", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_70", "target": "models_models_sysrolemenu", "relation": "uses", "confidence": "INFERRED", @@ -191853,7 +191989,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_17", + "source": "services_web_auth_roles_rationale_20", "target": "models_models_sysuserrole", "relation": "uses", "confidence": "INFERRED", @@ -191862,7 +191998,7 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_29", + "source": "services_web_auth_roles_rationale_32", "target": "models_models_sysuserrole", "relation": "uses", "confidence": "INFERRED", @@ -191871,7 +192007,25 @@ "weight": 0.8 }, { - "source": "services_web_auth_roles_rationale_57", + "source": "services_web_auth_roles_rationale_54", + "target": "models_models_sysuserrole", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_59", + "target": "models_models_sysuserrole", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "services/web_auth_roles.py", + "source_location": "L10", + "weight": 0.8 + }, + { + "source": "services_web_auth_roles_rationale_70", "target": "models_models_sysuserrole", "relation": "uses", "confidence": "INFERRED", @@ -206196,7 +206350,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_facility.py", - "source_location": "L511", + "source_location": "L513", "weight": 1.0 }, { @@ -206206,7 +206360,17 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/storage_facility.py", - "source_location": "L512", + "source_location": "L514", + "weight": 1.0 + }, + { + "source": "crud_storage_facility_insert_row_and_shift_slots", + "target": "services_storage_facility_code_cascade_refresh_slot_name_snapshots_for_slots", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/storage_facility.py", + "source_location": "L533", "weight": 1.0 }, { @@ -207306,7 +207470,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L44", + "source_location": "L48", "weight": 1.0 }, { @@ -207316,7 +207480,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0 }, { @@ -207326,7 +207490,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L69", + "source_location": "L73", "weight": 1.0 }, { @@ -207336,7 +207500,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L89", + "source_location": "L93", "weight": 1.0 }, { @@ -207346,7 +207510,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L93", + "source_location": "L97", "weight": 1.0 }, { @@ -207356,7 +207520,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L109", + "source_location": "L113", "weight": 1.0 }, { @@ -207366,7 +207530,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L110", + "source_location": "L114", "weight": 1.0 }, { @@ -207376,7 +207540,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L110", + "source_location": "L114", "weight": 1.0 }, { @@ -207386,7 +207550,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L120", + "source_location": "L124", "weight": 1.0 }, { @@ -207396,7 +207560,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L121", + "source_location": "L125", "weight": 1.0 }, { @@ -207406,7 +207570,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L123", + "source_location": "L127", "weight": 1.0 }, { @@ -207416,7 +207580,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L125", + "source_location": "L129", "weight": 1.0 }, { @@ -207426,7 +207590,17 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L131", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "api_public_web_login", + "target": "services_web_auth_roles_user_has_active_roles", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L141", "weight": 1.0 }, { @@ -207436,7 +207610,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L137", + "source_location": "L144", "weight": 1.0 }, { @@ -207446,7 +207620,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L139", + "source_location": "L146", "weight": 1.0 }, { @@ -207456,7 +207630,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L143", + "source_location": "L150", "weight": 1.0 }, { @@ -207466,7 +207640,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L148", + "source_location": "L155", "weight": 1.0 }, { @@ -207476,7 +207650,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L158", + "source_location": "L165", "weight": 1.0 }, { @@ -207486,7 +207660,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L159", + "source_location": "L166", "weight": 1.0 }, { @@ -207496,7 +207670,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L161", + "source_location": "L168", "weight": 1.0 }, { @@ -207506,7 +207680,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L174", + "source_location": "L181", "weight": 1.0 }, { @@ -207516,7 +207690,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L176", + "source_location": "L183", "weight": 1.0 }, { @@ -207526,19 +207700,19 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L179", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "core_auth_is_session_valid", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", "source_location": "L186", "weight": 1.0 }, + { + "source": "api_public_refresh_token", + "target": "core_auth_is_session_valid", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L193", + "weight": 1.0 + }, { "source": "api_public_refresh_token", "target": "core_auth_is_refresh_token_valid", @@ -207546,7 +207720,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L188", + "source_location": "L195", "weight": 1.0 }, { @@ -207556,7 +207730,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L197", + "source_location": "L204", "weight": 1.0 }, { @@ -207566,7 +207740,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L199", + "source_location": "L206", "weight": 1.0 }, { @@ -207576,7 +207750,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L200", + "source_location": "L207", "weight": 1.0 }, { @@ -207586,7 +207760,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L202", + "source_location": "L209", "weight": 1.0 }, { @@ -207596,7 +207770,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L205", + "source_location": "L212", "weight": 1.0 }, { @@ -207606,7 +207780,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L210", + "source_location": "L217", "weight": 1.0 }, { @@ -207616,7 +207790,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L220", + "source_location": "L227", "weight": 1.0 }, { @@ -207626,7 +207800,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L222", + "source_location": "L229", "weight": 1.0 }, { @@ -207636,7 +207810,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L236", + "source_location": "L243", "weight": 1.0 }, { @@ -207646,32 +207820,12 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L238", - "weight": 1.0 - }, - { - "source": "api_public_logout", - "target": "core_auth_decode_token", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L242", - "weight": 1.0 - }, - { - "source": "api_public_logout", - "target": "core_auth_revoke_session", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", "source_location": "L245", "weight": 1.0 }, { "source": "api_public_logout", - "target": "core_response_success_response", + "target": "core_auth_decode_token", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -207679,6 +207833,26 @@ "source_location": "L249", "weight": 1.0 }, + { + "source": "api_public_logout", + "target": "core_auth_revoke_session", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L252", + "weight": 1.0 + }, + { + "source": "api_public_logout", + "target": "core_response_success_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L256", + "weight": 1.0 + }, { "source": "api_public_get_current_user_profile", "target": "core_response_success_response", @@ -207686,7 +207860,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L257", + "source_location": "L264", "weight": 1.0 }, { @@ -207696,7 +207870,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L259", + "source_location": "L266", "weight": 1.0 }, { @@ -207706,7 +207880,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L271", + "source_location": "L278", "weight": 1.0 }, { @@ -207716,7 +207890,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L273", + "source_location": "L280", "weight": 1.0 }, { @@ -207726,7 +207900,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L276", + "source_location": "L283", "weight": 1.0 }, { @@ -207736,7 +207910,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L290", + "source_location": "L297", "weight": 1.0 }, { @@ -207746,7 +207920,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L291", + "source_location": "L298", "weight": 1.0 }, { @@ -207756,7 +207930,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L295", + "source_location": "L302", "weight": 1.0 }, { @@ -207766,7 +207940,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L307", + "source_location": "L314", "weight": 1.0 }, { @@ -207776,7 +207950,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L309", + "source_location": "L316", "weight": 1.0 }, { @@ -207786,7 +207960,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L318", + "source_location": "L325", "weight": 1.0 }, { @@ -207796,7 +207970,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L319", + "source_location": "L326", "weight": 1.0 }, { @@ -207806,7 +207980,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L323", + "source_location": "L330", "weight": 1.0 }, { @@ -207816,7 +207990,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L340", + "source_location": "L347", "weight": 1.0 }, { @@ -207826,7 +208000,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L360", + "source_location": "L367", "weight": 1.0 }, { @@ -207836,7 +208010,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L361", + "source_location": "L368", "weight": 1.0 }, { @@ -207846,7 +208020,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L362", + "source_location": "L369", "weight": 1.0 }, { @@ -207856,7 +208030,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L364", + "source_location": "L371", "weight": 1.0 }, { @@ -207866,7 +208040,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L370", + "source_location": "L377", "weight": 1.0 }, { @@ -207876,7 +208050,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L372", + "source_location": "L379", "weight": 1.0 }, { @@ -207886,7 +208060,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L376", + "source_location": "L383", "weight": 1.0 }, { @@ -207896,7 +208070,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L379", + "source_location": "L386", "weight": 1.0 }, { @@ -207906,7 +208080,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L388", + "source_location": "L395", "weight": 1.0 }, { @@ -236710,13 +236884,13 @@ "weight": 1.0 }, { - "source": "services_web_auth_roles_resolve_web_role_for_user", + "source": "services_web_auth_roles_active_role_name_rows", "target": "str", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "services/web_auth_roles.py", - "source_location": "L47", + "source_location": "L50", "weight": 1.0 }, { @@ -236726,7 +236900,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "services/web_auth_roles.py", - "source_location": "L99", + "source_location": "L112", "weight": 1.0 }, { diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 5f5acc86..ba7f1dca 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,11 +1,11 @@ # Graph Report - app (2026-06-13) ## Corpus Check -- Large corpus: 205 files · ~231,443 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. +- Large corpus: 205 files · ~231,501 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. ## Summary -- 4023 nodes · 20953 edges · 55 communities detected -- Extraction: 33% EXTRACTED · 67% INFERRED · 0% AMBIGUOUS · INFERRED: 14077 edges (avg confidence: 0.6) +- 4027 nodes · 20969 edges · 55 communities detected +- Extraction: 33% EXTRACTED · 67% INFERRED · 0% AMBIGUOUS · INFERRED: 14087 edges (avg confidence: 0.6) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) @@ -82,179 +82,179 @@ core/api_request_log_middleware.py → models/models.py - `get_menu_list()` --calls--> `success_response()` [INFERRED] api/menu.py → core/response.py -- `中试服务体检管理 API(体检信息、预约项目、实际项目)` --uses--> `SysUser` [INFERRED] - api/pilot_checkup.py → models/models.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 (768): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+760 more) +Nodes (796): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+788 more) ### Community 1 - "Community 1" Cohesion: 0.01 -Nodes (528): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+520 more) +Nodes (570): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+562 more) ### Community 2 - "Community 2" -Cohesion: 0.09 -Nodes (332): 环境检测 — 检测项维护 + 登记管理 API, 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), AccessLogCreateBody, AccessLogUpdateBody, CleanRoomCreateBody, CleanRoomUpdateBody, ExhibitionAppointmentCreateBody, ExhibitionAppointmentUpdateBody (+324 more) +Cohesion: 0.08 +Nodes (370): 环境检测 — 检测项维护 + 登记管理 API, 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), AccessLogCreateBody, AccessLogUpdateBody, CleanRoomCreateBody, CleanRoomUpdateBody, ExhibitionAppointmentCreateBody, ExhibitionAppointmentUpdateBody (+362 more) ### Community 3 - "Community 3" -Cohesion: 0.02 -Nodes (223): _persist_protocol_sub_resources(), list_ethnics_for_select(), list_access_logs(), list_uv_disinfect_logs(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), _resolve_user_role_scopes() (+215 more) +Cohesion: 0.01 +Nodes (231): _ensure_customer_for_mother(), _persist_protocol_sub_resources(), list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), _resolve_user_role_scopes(), format_date() (+223 more) ### Community 4 - "Community 4" Cohesion: 0.02 -Nodes (234): generate_uuid(), create_collection_region(), create_hospital(), get_collection_region(), get_hospital(), _hospital_to_dict(), list_hospitals(), soft_delete_collection_region() (+226 more) +Nodes (226): 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() (+218 more) ### Community 5 - "Community 5" -Cohesion: 0.02 -Nodes (219): 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() (+211 more) +Cohesion: 0.04 +Nodes (216): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+208 more) ### Community 6 - "Community 6" -Cohesion: 0.07 -Nodes (223): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+215 more) +Cohesion: 0.05 +Nodes (196): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+188 more) ### Community 7 - "Community 7" Cohesion: 0.02 -Nodes (183): api_save_application(), api_get_checkup_detail(), get_protocol_nos_used_in_protocols(), create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), 字典类型 CRUD(sys_dict_type) (+175 more) +Nodes (113): get_designer_data(), _error_json(), lifespan(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware (+105 more) ### Community 8 - "Community 8" -Cohesion: 0.03 -Nodes (170): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), _is_enabled_status(), list_materials() (+162 more) +Cohesion: 0.02 +Nodes (165): api_save_application(), 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() (+157 more) ### Community 9 - "Community 9" -Cohesion: 0.02 -Nodes (109): get_designer_data(), _error_json(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError (+101 more) +Cohesion: 0.03 +Nodes (143): batch_discard(), batch_options(), _batch_row_to_dict(), batch_stock_in(), batch_stock_out(), _create_batch_and_usage(), delete_batch(), _discard_batch() (+135 more) ### Community 10 - "Community 10" Cohesion: 0.03 -Nodes (99): _avatar_url_field(), _build_current_user_payload(), _build_user_info_payload(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线) (+91 more) +Nodes (98): _avatar_url_field(), _build_current_user_payload(), _build_user_info_payload(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线) (+90 more) ### Community 11 - "Community 11" Cohesion: 0.04 -Nodes (93): 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() (+85 more) +Nodes (99): 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() (+91 more) ### Community 12 - "Community 12" -Cohesion: 0.36 -Nodes (66): BatchStockInBody, BatchStockInItem, BatchStockOutBody, BatchStockOutItem, ConsumableCreateBody, ConsumablePackCreateBody, ConsumablePackUpdateBody, ConsumableUpdateBody (+58 more) - -### Community 13 - "Community 13" -Cohesion: 0.09 -Nodes (48): allocate_next_biz_no(), _format_biz_no(), _prefix_for(), 业务协议号自动生成:XBCC / JZCC + YYYYMMDD + 6 位序号, 原子分配下一个业务协议号。 须在 create 事务内调用;使用 MySQL LAST_INSERT_ID 保证并发安全。, create_collection_protocol(), _active_link_query(), assert_biz_no_available() (+40 more) - -### Community 14 - "Community 14" Cohesion: 0.09 Nodes (45): batch_stock_in(), batch_stock_out(), code_exists(), create_material(), _dec(), _filter_material_type(), _fmt_dt(), get_material() (+37 more) -### Community 15 - "Community 15" +### Community 13 - "Community 13" 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 16 - "Community 16" +### Community 14 - "Community 14" Cohesion: 0.12 -Nodes (10): 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, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 tot, 生成签名 V3 (SHA256 with RSA), wechat_pay() (+2 more) +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 15 - "Community 15" +Cohesion: 0.16 +Nodes (27): set_current_process_route(), add_step(), copy_step(), create_route(), _create_step_consumable(), _create_step_data_collection(), _create_step_output(), _create_step_reagent() (+19 more) + +### Community 16 - "Community 16" +Cohesion: 0.21 +Nodes (23): _amount_for_row(), _batch_map(), deduct_for_task(), _deduct_task_usage_legacy_batch(), _display_remark(), list_linked_task_usages(), list_my_usages(), list_requisition_options() (+15 more) ### Community 17 - "Community 17" -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.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.21 -Nodes (15): batch_generate_protocol_nos(), batch_issue_protocol_nos(), batch_revoke_protocol_nos(), create_protocol_no(), get_protocol_no(), list_protocol_nos(), _parse_issued_time(), protocol_no_exists() (+7 more) +Nodes (19): _consumable_row_to_dict(), create_process(), _create_sub_consumable(), _create_sub_data_collection(), _create_sub_output(), _create_sub_reagent(), _data_collection_row_to_dict(), get_process() (+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) + +### Community 20 - "Community 20" Cohesion: 0.29 Nodes (14): _amount_for_row(), _batch_map(), _display_remark(), list_usages(), _list_usages_query(), _paginate_usages(), _parse_receiver_purpose_from_remark(), _receiver_display_map() (+6 more) -### Community 20 - "Community 20" -Cohesion: 0.25 -Nodes (12): batch_generate_sample_codes(), batch_issue_sample_codes(), batch_revoke_sample_codes(), create_sample_code(), get_sample_code(), _parse_issued_time(), 样本编码池 CRUD(biz_sample_code), 批量生成样本编码: 类型前缀 + 中间段 + 补零序号 (+4 more) - ### Community 21 - "Community 21" +Cohesion: 0.28 +Nodes (14): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), _is_enabled_status(), list_materials() (+6 more) + +### Community 22 - "Community 22" 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" +### Community 23 - "Community 23" +Cohesion: 0.23 +Nodes (12): Config, ProductBase, ProductCategoryBase, ProductCategoryCreate, ProductCategoryResponse, ProductCreate, ProductResponse, ProductUnitBase (+4 more) + +### Community 24 - "Community 24" Cohesion: 0.29 Nodes (11): create_equipment(), _dec(), equipment_code_exists(), get_equipment(), list_equipments(), _norm_status(), _parse_date(), 设备 CRUD(biz_equipment) (+3 more) -### Community 23 - "Community 23" -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" -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" -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) +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 26 - "Community 26" 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) +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 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 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 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" -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" +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" +### Community 31 - "Community 31" Cohesion: 0.31 Nodes (8): create_sop_document(), get_sop_document(), list_sop_documents(), SOP文档 CRUD(biz_sop_document), _row_to_dict(), soft_delete_sop_document(), sop_code_exists(), update_sop_document() -### Community 30 - "Community 30" +### Community 32 - "Community 32" 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 33 - "Community 33" 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" +### Community 34 - "Community 34" 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" +### Community 35 - "Community 35" 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" +### Community 36 - "Community 36" Cohesion: 0.31 Nodes (8): category_code_exists(), create_process_category(), get_process_category(), list_process_categories(), 工艺工序分类 CRUD(biz_process_category), _row_to_dict(), soft_delete_process_category(), update_process_category() -### Community 35 - "Community 35" +### Community 37 - "Community 37" Cohesion: 0.31 Nodes (8): create_item_unit(), get_item_unit(), list_item_units(), 物品单位 CRUD(biz_item_unit), _row_to_dict(), soft_delete_item_unit(), unit_code_exists(), update_item_unit() -### Community 36 - "Community 36" +### Community 38 - "Community 38" 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() -### Community 37 - "Community 37" +### Community 39 - "Community 39" Cohesion: 0.31 Nodes (8): create_output_type(), get_output_type(), list_output_types(), 工艺产出物类型 CRUD(biz_output_type), _row_to_dict(), soft_delete_output_type(), type_code_exists(), update_output_type() -### Community 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" +### Community 40 - "Community 40" 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.33 -Nodes (7): _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), _row_to_dict(), soft_delete_menu(), update_menu() - ### 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() @@ -340,11 +340,11 @@ Nodes (1): 发送催单通知给配送员 Args: del ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 5`, `Community 6`, `Community 7`, `Community 9`, `Community 10`, `Community 12`, `Community 18`, `Community 20`, `Community 24`, `Community 26`?** +- **Why does `SysUser` connect `Community 1` to `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 6`, `Community 8`, `Community 10`, `Community 28`?** _High betweenness centrality (0.105) - this node is a cross-community bridge._ -- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 3`, `Community 7`, `Community 9`, `Community 10`, `Community 11`, `Community 46`?** +- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 3`, `Community 7`, `Community 8`, `Community 10`, `Community 11`, `Community 46`, `Community 15`?** _High betweenness centrality (0.063) - this node is a cross-community bridge._ -- **Why does `generate_uuid()` connect `Community 4` to `Community 0`, `Community 3`, `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 20`, `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`?** +- **Why does `generate_uuid()` connect `Community 5` to `Community 0`, `Community 3`, `Community 4`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 21`, `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.055) - this node is a cross-community bridge._ - **Are the 665 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?** _`str` has 665 INFERRED edges - model-reasoned connections that need verification._ diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 89fd8c3b..923db8f4 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -57,12 +57,12 @@
-
4023 nodes · 20953 edges · 61 communities
+
4027 nodes · 20969 edges · 61 communities