From eec61cb5ddd91d67376365a1ce2de58e062cb12b Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 4 Jun 2026 12:57:59 +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/app.pid | 2 +- backend/app/api/public.py | 172 +- backend/app/core/auth.py | 10 +- backend/app/core/avatar_url.py | 41 + backend/app/core/config.py | 1 + backend/app/crud/collection_protocol.py | 39 +- backend/app/crud/user.py | 19 + ...19f1e2f5eb6e7d106f60ffb4e44191dea7aed.json | 1 + ...0028f782abfa98ed3c43800974c42ac98e818.json | 1 + ...7003528481771728ae89e68e29f4efe436c59.json | 1 + ...773895a868d06b2a9afb341d0360ea69eb826.json | 1 + ...b2082963729ff9d0fa7d6d7a808f86599418d.json | 1 + ...9f717297ccd2f645454924ab3e253df9b172c.json | 1 + ...1e8ddb87a23c63b3c99e02f19393d1c7913fa.json | 1 + ...b9df8b897edbb35da71c9291681bc3c22a4df.json | 1 + ...5f985b8347156c3e2d8755db5d55f34062f07.json | 1 + ...0be2456699ab50dc3ab99c28e69aa6fb14364.json | 1 + ...66890264ce071661ac2bcc4764f7e30f8c56d.json | 1 + ...d48457815a31c24d83bd469b214405e052ca9.json | 1 + ...e25e10a5a7b9c46c3f730e2ead6531770a388.json | 1 + ...ddfe69aaee706f9da4e81b59e9f7aadcdcbf0.json | 1 + ...ddbfe58077a8130165067fb5ac2c5f896567d.json | 1 + ...ed36f93215ccf3e81bff1b8e51e895d67704f.json | 1 + backend/app/models/models.py | 2 +- backend/app/schemas/auth.py | 13 +- .../app/services/protocol_pay_mode_switch.py | 84 + .../services/protocol_payment_installment.py | 73 + backend/graphify-out/.graphify_analysis.json | 3207 +++---- backend/graphify-out/.graphify_extract.json | 3771 +++++--- backend/graphify-out/GRAPH_REPORT.md | 277 +- backend/graphify-out/graph.html | 8 +- backend/graphify-out/graph.json | 8280 ++++++++++------- backend/graphify-out/manifest.json | 16 +- .../tests/test_protocol_pay_mode_switch.py | 110 + .../test_protocol_payment_installment.py | 44 + deploy/docker/README.md | 5 + deploy/docker/web-admin/Dockerfile | 2 + deploy/docker/部署指导手册.html | 499 + ...026-06-04-installment-interval-decimal.sql | 3 + docs/sql/zkxw.sql | 2 +- ...6-06-04-protocol-pay-mode-switch-design.md | 227 + scripts/package-docker-deploy.sh | 3 + .../graphify-out/.graphify_analysis.json | 1520 +-- web-admin/graphify-out/.graphify_extract.json | 1395 ++- web-admin/graphify-out/GRAPH_REPORT.md | 199 +- web-admin/graphify-out/graph.html | 8 +- web-admin/graphify-out/graph.json | 3985 +++++--- web-admin/graphify-out/manifest.json | 141 +- web-admin/src/api/auth.ts | 47 + .../art-header-bar/widget/ArtUserMenu.vue | 63 +- .../widget/UserPasswordDialog.vue | 149 + .../widget/UserProfileDialog.vue | 326 + ...b4d0f177a54cbe472781f1401cd5d33ed2577.json | 1 + ...306216de02605e343fec6a4c30c1910048597.json | 1 + ...4d678086e3979d65ca641a56cae500b42c947.json | 1 + ...42f3521530a261e8f3dd315fa0266e689a1c6.json | 1 + ...159f99c1db70d74bc15aee51268972e85d8ec.json | 1 + ...dca02150ac6592b58dd90785d56145e9c37d9.json | 1 + ...b91a8ddc4a618a9202f4b382304f1352b17a4.json | 1 + ...04a41bf8335ac92c5f18ebc962fc89d6b3574.json | 1 + ...11f3e407e38ada73c8e5552ab0ae59efa7fca.json | 1 + ...54010030ad2b48856f4f14d6cdd7d0ab50ca0.json | 1 + ...10c18f71cc860c222994e1058af85853c72c3.json | 1 + ...be1cc9de08ca5b6d89f53e1a7b242386d6789.json | 1 + ...d921cd331a4170c42b41082bd82639d871113.json | 1 + ...23e0fc898eb4ddd242b493de051472b0ee287.json | 1 + ...2b893dba5b78e15aa894b9f9daccd08e288bf.json | 1 + ...928f35bf93aed27402fe8c3d860e55e9987aa.json | 1 + ...aaed026bc831509f67b38efaec028d524847c.json | 1 + ...8299e4e73d4778faca18389edb49a0241c4b9.json | 1 + ...73a275dd8cf299c3f9ae5d2dabfe5e1b178d1.json | 1 + ...6f64ebe9b292dd627561a85330bff578d8c4a.json | 1 + ...252baed1b5b04d9a998e6a46fbfcfbb535a2f.json | 1 + ...c76501e56e2e9fa8d375b22a96b43517ba2ca.json | 1 + ...b7301c5591ecd702c280f90f914d453c18c43.json | 1 + web-admin/src/store/modules/user.ts | 9 +- web-admin/src/types/api.d.ts | 4 +- .../src/utils/protocol-fq-params-change.ts | 204 + .../src/utils/protocol-pay-mode-switch.ts | 216 + .../src/utils/protocol-payment-installment.ts | 27 +- web-admin/src/utils/user-avatar.ts | 85 +- .../protocol/ProtocolFormDialog.vue | 284 +- 82 files changed, 16585 insertions(+), 9026 deletions(-) create mode 100644 backend/app/core/avatar_url.py create mode 100644 backend/app/graphify-out/cache/ast/051b251e4af1230d48a963f329b19f1e2f5eb6e7d106f60ffb4e44191dea7aed.json create mode 100644 backend/app/graphify-out/cache/ast/07fb0eb89d8e4c6fca95f8905ee0028f782abfa98ed3c43800974c42ac98e818.json create mode 100644 backend/app/graphify-out/cache/ast/0ee754a8d7ec722026239c1a1e97003528481771728ae89e68e29f4efe436c59.json create mode 100644 backend/app/graphify-out/cache/ast/3d0e14af8f4114292852140a285773895a868d06b2a9afb341d0360ea69eb826.json create mode 100644 backend/app/graphify-out/cache/ast/41e89b0e78be680783c961a2f20b2082963729ff9d0fa7d6d7a808f86599418d.json create mode 100644 backend/app/graphify-out/cache/ast/585e42fac98184466b065ea8c7f9f717297ccd2f645454924ab3e253df9b172c.json create mode 100644 backend/app/graphify-out/cache/ast/630a0cd5b4f180b99a4a28bdb561e8ddb87a23c63b3c99e02f19393d1c7913fa.json create mode 100644 backend/app/graphify-out/cache/ast/69f5dd7c6e637bb2ec2bbbca349b9df8b897edbb35da71c9291681bc3c22a4df.json create mode 100644 backend/app/graphify-out/cache/ast/6cc565d6f62deaf3fea9fd20db15f985b8347156c3e2d8755db5d55f34062f07.json create mode 100644 backend/app/graphify-out/cache/ast/71619dde49e29da9fd3725647430be2456699ab50dc3ab99c28e69aa6fb14364.json create mode 100644 backend/app/graphify-out/cache/ast/7cc46efdbd758dca719c74bee9166890264ce071661ac2bcc4764f7e30f8c56d.json create mode 100644 backend/app/graphify-out/cache/ast/94f8c4b7c353bd2bf554b45bd6fd48457815a31c24d83bd469b214405e052ca9.json create mode 100644 backend/app/graphify-out/cache/ast/bb566178ac35853b816b8845ec5e25e10a5a7b9c46c3f730e2ead6531770a388.json create mode 100644 backend/app/graphify-out/cache/ast/c3377cfd7b2471999594b3d58ccddfe69aaee706f9da4e81b59e9f7aadcdcbf0.json create mode 100644 backend/app/graphify-out/cache/ast/d73124ef65ab8f81202b8e836e6ddbfe58077a8130165067fb5ac2c5f896567d.json create mode 100644 backend/app/graphify-out/cache/ast/e7266b0ddc693d2b161890f3150ed36f93215ccf3e81bff1b8e51e895d67704f.json create mode 100644 backend/app/services/protocol_pay_mode_switch.py create mode 100644 backend/app/services/protocol_payment_installment.py create mode 100644 backend/tests/test_protocol_pay_mode_switch.py create mode 100644 backend/tests/test_protocol_payment_installment.py create mode 100644 deploy/docker/部署指导手册.html create mode 100644 docs/sql/migrations/2026-06-04-installment-interval-decimal.sql create mode 100644 docs/superpowers/specs/2026-06-04-protocol-pay-mode-switch-design.md create mode 100644 web-admin/src/components/core/layouts/art-header-bar/widget/UserPasswordDialog.vue create mode 100644 web-admin/src/components/core/layouts/art-header-bar/widget/UserProfileDialog.vue create mode 100644 web-admin/src/graphify-out/cache/ast/0dc8ff6d5204bdf625aed8dc501b4d0f177a54cbe472781f1401cd5d33ed2577.json create mode 100644 web-admin/src/graphify-out/cache/ast/0fde49475da1c53fea948e3679e306216de02605e343fec6a4c30c1910048597.json create mode 100644 web-admin/src/graphify-out/cache/ast/297b2e78edb9873505234694c624d678086e3979d65ca641a56cae500b42c947.json create mode 100644 web-admin/src/graphify-out/cache/ast/412524c67ae8c587b0ffa7d2da942f3521530a261e8f3dd315fa0266e689a1c6.json create mode 100644 web-admin/src/graphify-out/cache/ast/4d4a2da2625d36e0b112a376498159f99c1db70d74bc15aee51268972e85d8ec.json create mode 100644 web-admin/src/graphify-out/cache/ast/5fb93c975f5070ebdbf4ef07805dca02150ac6592b58dd90785d56145e9c37d9.json create mode 100644 web-admin/src/graphify-out/cache/ast/654b1af618676f59b4226fe4b30b91a8ddc4a618a9202f4b382304f1352b17a4.json create mode 100644 web-admin/src/graphify-out/cache/ast/6feece2286542d38a91f4e2462e04a41bf8335ac92c5f18ebc962fc89d6b3574.json create mode 100644 web-admin/src/graphify-out/cache/ast/7a9c8b8f34e635509ff0c6dd68811f3e407e38ada73c8e5552ab0ae59efa7fca.json create mode 100644 web-admin/src/graphify-out/cache/ast/7c36d82b43d285ffad9a1dfd49654010030ad2b48856f4f14d6cdd7d0ab50ca0.json create mode 100644 web-admin/src/graphify-out/cache/ast/86c3a28c2931c5ba9735deb305e10c18f71cc860c222994e1058af85853c72c3.json create mode 100644 web-admin/src/graphify-out/cache/ast/8ddd482cf0e360f73c560c60c41be1cc9de08ca5b6d89f53e1a7b242386d6789.json create mode 100644 web-admin/src/graphify-out/cache/ast/97ef81f8be2b150d3bbf0ca0682d921cd331a4170c42b41082bd82639d871113.json create mode 100644 web-admin/src/graphify-out/cache/ast/98614108f4d4eb54371e1eb55e723e0fc898eb4ddd242b493de051472b0ee287.json create mode 100644 web-admin/src/graphify-out/cache/ast/9c1115c65c227f52472a3dd83f92b893dba5b78e15aa894b9f9daccd08e288bf.json create mode 100644 web-admin/src/graphify-out/cache/ast/a9337e3ea330a74f4c8b93ab450928f35bf93aed27402fe8c3d860e55e9987aa.json create mode 100644 web-admin/src/graphify-out/cache/ast/aba319e09a5009a843beec72c11aaed026bc831509f67b38efaec028d524847c.json create mode 100644 web-admin/src/graphify-out/cache/ast/bf5e9377cc4b7c76a07eec318b48299e4e73d4778faca18389edb49a0241c4b9.json create mode 100644 web-admin/src/graphify-out/cache/ast/cd8c10e9d510e4e97a4a05d30d273a275dd8cf299c3f9ae5d2dabfe5e1b178d1.json create mode 100644 web-admin/src/graphify-out/cache/ast/e5a5424b76ffa92c795598c33966f64ebe9b292dd627561a85330bff578d8c4a.json create mode 100644 web-admin/src/graphify-out/cache/ast/e92b2927cbfe1c9920ec8f39922252baed1b5b04d9a998e6a46fbfcfbb535a2f.json create mode 100644 web-admin/src/graphify-out/cache/ast/f0b7fd64fc4915744d3d351fe6dc76501e56e2e9fa8d375b22a96b43517ba2ca.json create mode 100644 web-admin/src/graphify-out/cache/ast/fdbd04e569495e6cf7347a6001ab7301c5591ecd702c280f90f914d453c18c43.json create mode 100644 web-admin/src/utils/protocol-fq-params-change.ts create mode 100644 web-admin/src/utils/protocol-pay-mode-switch.ts diff --git a/backend/app.pid b/backend/app.pid index 7107ea17..8aee5349 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -91519 +88694 diff --git a/backend/app/api/public.py b/backend/app/api/public.py index 3d344219..dbc06bdd 100644 --- a/backend/app/api/public.py +++ b/backend/app/api/public.py @@ -1,7 +1,8 @@ """公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线)""" +import os from typing import Optional -from fastapi import APIRouter, Depends, HTTPException, Request +from fastapi import APIRouter, Depends, HTTPException, Request, UploadFile, File from sqlalchemy.exc import OperationalError from sqlalchemy.orm import Session @@ -22,16 +23,21 @@ from app.core.auth import ( ) from app.core.response import success_response, error_response from app.core.config import settings +from app.core.storage import storage +from app.core.avatar_url import extract_avatar_storage_key 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.schemas.auth import ProfileUpdateRequest +from app.crud.user import update_user, change_password router = APIRouter(prefix="", tags=["公共接口"]) def _avatar_url_field(user: SysUser) -> Optional[str]: + """返回库中原始头像路径,由前端按 VITE_MINIO_BASE_URL 拼展示 URL。""" raw = getattr(user, "avatar", None) if not raw: return None @@ -48,6 +54,8 @@ def _build_user_info_payload(user: SysUser, web_role: str) -> dict: "realName": user.nick_name, "phone": phone, "email": (getattr(user, "email", None) or "").strip() or None, + "sex": getattr(user, "sex", None) or "0", + "remark": (getattr(user, "remark", None) or "").strip() or None, "role": web_role, "regionId": user.dept_id, "regionName": None, @@ -55,6 +63,36 @@ def _build_user_info_payload(user: SysUser, web_role: str) -> dict: } +def _build_current_user_payload(current_user: dict) -> dict: + """组装 current-user 接口响应。""" + au = current_user.get("avatar_url") + avatar_url = str(au).strip() if au else None + return { + "id": current_user.get("user_id"), + "username": current_user.get("username"), + "realName": current_user.get("real_name"), + "phone": current_user.get("phone"), + "email": current_user.get("email"), + "sex": current_user.get("sex") or "0", + "remark": current_user.get("remark"), + "role": current_user.get("role"), + "isSuperAdmin": current_user.get("role") == "super_admin", + "regionId": current_user.get("region_id"), + "regionName": None, + "regionIds": [], + "isActive": current_user.get("is_active"), + "avatarUrl": avatar_url if avatar_url else None, + } + + +async def _resolve_current_user_from_request(request: Request, db: Session) -> dict: + authorization = request.headers.get("Authorization", "") + if not authorization.startswith("Bearer "): + raise HTTPException(status_code=401, detail="未授权") + token = authorization.replace("Bearer ", "") + return await get_current_user_by_token(token=token, db=db) + + def _jwt_user_payload(user: SysUser, web_role: str) -> dict: return { "sub": user.id, @@ -214,36 +252,118 @@ async def logout(request: Request): @router.get("/web/auth/current-user", response_model=dict) async def get_current_user_profile(request: Request, db: Session = Depends(get_db)): """获取当前用户信息(与 sys_user 字段对应)。""" - authorization = request.headers.get("Authorization", "") - if not authorization.startswith("Bearer "): - return error_response(401, "未授权") - - token = authorization.replace("Bearer ", "") try: - current_user = await get_current_user_by_token(token=token, db=db) - - au = current_user.get("avatar_url") - avatar_url = str(au).strip() if au else None - return success_response( - { - "id": current_user.get("user_id"), - "username": current_user.get("username"), - "realName": current_user.get("real_name"), - "phone": current_user.get("phone"), - "email": current_user.get("email"), - "role": current_user.get("role"), - "isSuperAdmin": current_user.get("role") == "super_admin", - "regionId": current_user.get("region_id"), - "regionName": None, - "regionIds": [], - "isActive": current_user.get("is_active"), - "avatarUrl": avatar_url if avatar_url else None, - } - ) + current_user = await _resolve_current_user_from_request(request, db) + return success_response(_build_current_user_payload(current_user)) except HTTPException: return error_response(401, "Token无效或已过期") +@router.put("/web/auth/profile", response_model=dict) +async def update_current_user_profile( + request: Request, + body: ProfileUpdateRequest, + db: Session = Depends(get_db), +): + """当前用户更新个人信息(手机号、邮箱、性别、备注)。""" + try: + current_user = await _resolve_current_user_from_request(request, db) + user_id = current_user.get("user_id") + if not user_id: + return error_response(401, "未授权") + + payload = body.model_dump(exclude_unset=True, by_alias=False) + update_user( + db, + user_id, + phone_no=payload.get("phone_no"), + email=payload.get("email"), + sex=payload.get("sex"), + remark=payload.get("remark"), + avatar=payload.get("avatar"), + user_id_updater=user_id, + ) + + user = user_crud.get(db, user_id) + if not user: + return error_response(404, "用户不存在") + web_role = resolve_web_role_for_user(db, user.id) + return success_response(_build_user_info_payload(user, web_role)) + except HTTPException: + return error_response(401, "Token无效或已过期") + except ValueError as exc: + return error_response(400, str(exc)) + + +@router.post("/web/auth/change-password", response_model=dict) +async def change_current_user_password( + request: Request, + body: dict, + db: Session = Depends(get_db), +): + """当前用户修改密码。""" + try: + current_user = await _resolve_current_user_from_request(request, db) + user_id = current_user.get("user_id") + if not user_id: + return error_response(401, "未授权") + + old_password = (body.get("oldPassword") or body.get("old_password") or "").strip() + new_password = (body.get("newPassword") or body.get("new_password") or "").strip() + if not old_password: + return error_response(400, "请输入原密码") + if len(new_password) < 6: + return error_response(400, "新密码长度不能少于6位") + + change_password(db, user_id, old_password, new_password) + return success_response({"message": "密码修改成功"}) + except HTTPException: + return error_response(401, "Token无效或已过期") + except ValueError as exc: + return error_response(400, str(exc)) + + +_AVATAR_MAX_BYTES = 2 * 1024 * 1024 +_AVATAR_ALLOWED_EXT = {".jpg", ".jpeg", ".png", ".gif", ".webp", ".bmp"} + + +@router.post("/web/auth/upload-avatar", response_model=dict) +async def upload_current_user_avatar( + request: Request, + file: UploadFile = File(...), + db: Session = Depends(get_db), +): + """当前用户上传头像(仅图片,最大 2MB)。""" + try: + await _resolve_current_user_from_request(request, db) + except HTTPException: + return error_response(401, "Token无效或已过期") + + if not file or not file.filename: + return error_response(400, "请选择图片") + + ext = os.path.splitext(file.filename)[1].lower() + if ext not in _AVATAR_ALLOWED_EXT: + return error_response(400, "仅支持 JPG、PNG、GIF、WEBP、BMP 格式") + + content_type = (file.content_type or "").lower() + if content_type and not content_type.startswith("image/"): + return error_response(400, "仅支持上传图片文件") + + try: + file_content = await file.read() + if not file_content: + return error_response(400, "文件内容为空") + if len(file_content) > _AVATAR_MAX_BYTES: + return error_response(400, "头像大小不能超过 2MB") + + url = storage.upload_file(file_content, file.filename, "avatar") + stored_url = extract_avatar_storage_key(url) + return success_response({"url": stored_url}) + except Exception as exc: + return error_response(500, f"上传失败: {str(exc)}") + + @router.get("/web/auth/menu-codes", response_model=dict) async def get_web_auth_menu_codes(request: Request, db: Session = Depends(get_db)): """获取当前用户菜单权限标识(sys_menu.perms,经角色继承)。""" diff --git a/backend/app/core/auth.py b/backend/app/core/auth.py index ab50ee17..9d462c54 100644 --- a/backend/app/core/auth.py +++ b/backend/app/core/auth.py @@ -225,7 +225,11 @@ async def get_current_user_by_token( phone = (getattr(user, "phone_no", None) or "").strip() or None email = (getattr(user, "email", None) or "").strip() or None - avatar = getattr(user, "avatar", None) + avatar_raw = getattr(user, "avatar", None) + avatar_stored = None + if avatar_raw is not None: + s = str(avatar_raw).strip() + avatar_stored = s if s else None current_user_dept_id.set(user.dept_id or "") @@ -237,7 +241,9 @@ async def get_current_user_by_token( "region_id": user.dept_id, "phone": phone, "email": email, - "avatar_url": avatar, + "sex": getattr(user, "sex", None) or "0", + "remark": (getattr(user, "remark", None) or "").strip() or None, + "avatar_url": avatar_stored, "is_active": user.status == "1", } diff --git a/backend/app/core/avatar_url.py b/backend/app/core/avatar_url.py new file mode 100644 index 00000000..c26d4661 --- /dev/null +++ b/backend/app/core/avatar_url.py @@ -0,0 +1,41 @@ +"""用户头像 URL 解析(sys_user.avatar 可能存 MinIO 相对路径或完整 URL)""" +from typing import Optional + +from app.core.config import settings +from app.core.storage import storage + + +def resolve_avatar_display_url(raw: Optional[str]) -> Optional[str]: + """服务端内部拼完整 URL(邮件等);Web API 应返回库中原始路径。""" + if raw is None: + return None + s = str(raw).strip() + if not s: + return None + lower = s.lower() + if lower.startswith("http://") or lower.startswith("https://") or s.startswith("/"): + return s + try: + return storage.get_url(s.lstrip("/")) + except Exception: + base = (settings.MINIO_BASE_URL or settings.LOCAL_STORAGE_URL or "").rstrip("/") + if base: + return f"{base}/{s.lstrip('/')}" + return s + + +def extract_avatar_storage_key(full_url: str) -> str: + """从 upload 返回值或历史完整 URL 中提取 avatar/ 相对路径。""" + u = (full_url or "").strip() + if not u: + return "" + base_url = (settings.MINIO_BASE_URL or "").rstrip("/") + if base_url and u.startswith(base_url + "/"): + return u[len(base_url) + 1 :].lstrip("/") + marker = "/avatar/" + idx = u.lower().find(marker) + if idx >= 0: + return f"avatar/{u[idx + len(marker) :].lstrip('/')}" + if not u.lower().startswith("http") and not u.startswith("/"): + return u.lstrip("/") + return u diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 84c6d5ea..a6cb9911 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -138,6 +138,7 @@ class Settings(BaseSettings): "/api/web/admin/products/upload-image," "/api/web/admin/categories/upload-image," "/api/web/admin/users/upload-avatar," + "/api/web/auth/upload-avatar," "/api/invoice/download" ) diff --git a/backend/app/crud/collection_protocol.py b/backend/app/crud/collection_protocol.py index 615fddff..1fe36c57 100644 --- a/backend/app/crud/collection_protocol.py +++ b/backend/app/crud/collection_protocol.py @@ -17,6 +17,8 @@ from app.crud.protocol_donation_convert import ( assert_biz_no_available, get_partner_sample_codes, ) +from app.services.protocol_payment_installment import calc_fq_installment_due_date +from app.services.protocol_pay_mode_switch import validate_payment_details_for_save from app.models.research_donation import BizResearchDonation, BizResearchDonationSample from app.models.models import ( BizAttachment, @@ -350,7 +352,7 @@ def _payment_to_dict(p: BizProtocolPayment) -> Dict[str, Any]: "payMode": p.pay_mode or "", "contractAmount": _dec(p.contract_amount), "installmentCount": p.installment_count, - "installmentIntervalMonths": p.installment_interval_months, + "installmentIntervalMonths": _dec(p.installment_interval_months), "lumpSumDeadline": (p.lump_sum_deadline or "").strip() if p.lump_sum_deadline else "", "installmentStartDate": (p.installment_start_date or "").strip() if p.installment_start_date else "", "tenantNo": p.tenant_no, @@ -2537,7 +2539,8 @@ def align_fq_payment_details_payload( amounts = _calc_installment_due_amounts(pay.contract_amount, count) start = (pay.installment_start_date or "").strip() - interval = int(pay.installment_interval_months or 0) + interval = pay.installment_interval_months + interval_val = float(interval) if interval is not None else 0 result: List[Dict[str, Any]] = [] for i in range(count): no = i + 1 @@ -2547,11 +2550,13 @@ def align_fq_payment_details_payload( if i < len(unnumbered): raw = dict(unnumbered[i]) raw["installment_no"] = no - if not raw.get("installment_due_date") and start and interval: - raw["installment_due_date"] = _add_months_yyyymmdd(start, i * interval) + if not raw.get("installment_due_date") and start and interval_val: + raw["installment_due_date"] = calc_fq_installment_due_date(start, i, interval_val) result.append(raw) continue - due_date = _add_months_yyyymmdd(start, i * interval) if start and interval else "" + due_date = ( + calc_fq_installment_due_date(start, i, interval_val) if start and interval_val else "" + ) due = amounts[i] if i < len(amounts) else None result.append( { @@ -2601,8 +2606,8 @@ def upsert_payment( obj = get_payment_by_protocol_id(db, collection_protocol_id, tenant_no) _STR_FIELDS = ["pay_mode"] _STR_DATE_FIELDS = ["lump_sum_deadline", "installment_start_date"] - _DEC_FIELDS = ["contract_amount"] - _INT_FIELDS = ["installment_count", "installment_interval_months"] + _DEC_FIELDS = ["contract_amount", "installment_interval_months"] + _INT_FIELDS = ["installment_count"] def _apply(target: BizProtocolPayment) -> None: for k in _STR_FIELDS: @@ -2658,6 +2663,26 @@ def save_payment_details( user_id: Optional[str], details: list, ) -> List[BizProtocolPaymentDetail]: + pay = ( + db.query(BizProtocolPayment) + .filter( + and_( + BizProtocolPayment.id == payment_id, + BizProtocolPayment.tenant_no == tenant_no, + BizProtocolPayment.del_flag == 0, + ) + ) + .first() + ) + if pay: + normalized = [_normalize_fields(dict(d)) for d in (details or [])] + validate_payment_details_for_save( + pay.pay_mode or "", + pay.contract_amount, + pay.installment_count, + normalized, + ) + existing = list_payment_details(db, payment_id, tenant_no) for d in existing: d.del_flag = 1 diff --git a/backend/app/crud/user.py b/backend/app/crud/user.py index 5df57a35..f1c0edd7 100644 --- a/backend/app/crud/user.py +++ b/backend/app/crud/user.py @@ -418,6 +418,25 @@ def reset_password(db: Session, user_id: str, new_password: str) -> None: db.commit() +def change_password(db: Session, user_id: str, old_password: str, new_password: str) -> None: + from app.core.security import verify_password + + obj = get_user(db, user_id) + if not obj: + raise ValueError("用户不存在") + pwd_hash = getattr(obj, "password", None) or "" + if not verify_password(old_password, pwd_hash): + raise ValueError("原密码不正确") + new_pw = (new_password or "").strip() + if len(new_pw) < 6: + raise ValueError("新密码长度不能少于6位") + obj.password = _hash_password(new_pw) + obj.update_by = user_id + obj.update_time = datetime.now() + db.add(obj) + db.commit() + + def total_pages(total: int, page_size: int) -> int: if total <= 0: return 0 diff --git a/backend/app/graphify-out/cache/ast/051b251e4af1230d48a963f329b19f1e2f5eb6e7d106f60ffb4e44191dea7aed.json b/backend/app/graphify-out/cache/ast/051b251e4af1230d48a963f329b19f1e2f5eb6e7d106f60ffb4e44191dea7aed.json new file mode 100644 index 00000000..c870ee55 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/051b251e4af1230d48a963f329b19f1e2f5eb6e7d106f60ffb4e44191dea7aed.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "label": "avatar_url.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L1"}, {"id": "core_avatar_url_resolve_avatar_display_url", "label": "resolve_avatar_display_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L8"}, {"id": "core_avatar_url_rationale_1", "label": "\u7528\u6237\u5934\u50cf URL \u89e3\u6790\uff08sys_user.avatar \u53ef\u80fd\u5b58 MinIO \u76f8\u5bf9\u8def\u5f84\u6216\u5b8c\u6574 URL\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "app_core_storage", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "core_avatar_url_resolve_avatar_display_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L8", "weight": 1.0}, {"source": "core_avatar_url_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L11"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L11"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L14"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L15"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L15"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L15"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "get_url", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L18"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L18"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "rstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L20"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L22"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/07fb0eb89d8e4c6fca95f8905ee0028f782abfa98ed3c43800974c42ac98e818.json b/backend/app/graphify-out/cache/ast/07fb0eb89d8e4c6fca95f8905ee0028f782abfa98ed3c43800974c42ac98e818.json new file mode 100644 index 00000000..a84362c7 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/07fb0eb89d8e4c6fca95f8905ee0028f782abfa98ed3c43800974c42ac98e818.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "label": "auth.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L1"}, {"id": "schemas_auth_loginrequest", "label": "LoginRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_auth_loginresponse", "label": "LoginResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L13"}, {"id": "schemas_auth_usercreate", "label": "UserCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L23"}, {"id": "schemas_auth_userresponse", "label": "UserResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L33"}, {"id": "schemas_auth_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L44"}, {"id": "schemas_auth_changepasswordrequest", "label": "ChangePasswordRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L48"}, {"id": "schemas_auth_profileupdaterequest", "label": "ProfileUpdateRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L54"}, {"id": "schemas_auth_resetpasswordrequest", "label": "ResetPasswordRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L65"}, {"id": "schemas_auth_rationale_1", "label": "Pydantic schemas - \u7528\u6237\u8ba4\u8bc1", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L1"}, {"id": "schemas_auth_rationale_55", "label": "\u5f53\u524d\u7528\u6237\u4e2a\u4eba\u4fe1\u606f\u66f4\u65b0\uff08\u4ec5\u5141\u8bb8\u81ea\u52a9\u4fee\u6539\u7684\u5b57\u6bb5\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L55"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_loginrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_auth_loginrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_loginresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "schemas_auth_loginresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_usercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L23", "weight": 1.0}, {"source": "schemas_auth_usercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_userresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L33", "weight": 1.0}, {"source": "schemas_auth_userresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_changepasswordrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L48", "weight": 1.0}, {"source": "schemas_auth_changepasswordrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L48", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_profileupdaterequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L54", "weight": 1.0}, {"source": "schemas_auth_profileupdaterequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_resetpasswordrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L65", "weight": 1.0}, {"source": "schemas_auth_resetpasswordrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L65", "weight": 1.0}, {"source": "schemas_auth_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L1", "weight": 1.0}, {"source": "schemas_auth_rationale_55", "target": "schemas_auth_profileupdaterequest", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L55", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/0ee754a8d7ec722026239c1a1e97003528481771728ae89e68e29f4efe436c59.json b/backend/app/graphify-out/cache/ast/0ee754a8d7ec722026239c1a1e97003528481771728ae89e68e29f4efe436c59.json new file mode 100644 index 00000000..00f2fb38 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/0ee754a8d7ec722026239c1a1e97003528481771728ae89e68e29f4efe436c59.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "label": "auth.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L1"}, {"id": "schemas_auth_loginrequest", "label": "LoginRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_auth_loginresponse", "label": "LoginResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L13"}, {"id": "schemas_auth_usercreate", "label": "UserCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L23"}, {"id": "schemas_auth_userresponse", "label": "UserResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L33"}, {"id": "schemas_auth_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L44"}, {"id": "schemas_auth_changepasswordrequest", "label": "ChangePasswordRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L48"}, {"id": "schemas_auth_profileupdaterequest", "label": "ProfileUpdateRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L54"}, {"id": "schemas_auth_resetpasswordrequest", "label": "ResetPasswordRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L64"}, {"id": "schemas_auth_rationale_1", "label": "Pydantic schemas - \u7528\u6237\u8ba4\u8bc1", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L1"}, {"id": "schemas_auth_rationale_55", "label": "\u5f53\u524d\u7528\u6237\u4e2a\u4eba\u4fe1\u606f\u66f4\u65b0\uff08\u4ec5\u5141\u8bb8\u81ea\u52a9\u4fee\u6539\u7684\u5b57\u6bb5\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L55"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_loginrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_auth_loginrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_loginresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "schemas_auth_loginresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_usercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L23", "weight": 1.0}, {"source": "schemas_auth_usercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_userresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L33", "weight": 1.0}, {"source": "schemas_auth_userresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_changepasswordrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L48", "weight": 1.0}, {"source": "schemas_auth_changepasswordrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L48", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_profileupdaterequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L54", "weight": 1.0}, {"source": "schemas_auth_profileupdaterequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "target": "schemas_auth_resetpasswordrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L64", "weight": 1.0}, {"source": "schemas_auth_resetpasswordrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L64", "weight": 1.0}, {"source": "schemas_auth_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_schemas_auth_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L1", "weight": 1.0}, {"source": "schemas_auth_rationale_55", "target": "schemas_auth_profileupdaterequest", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/auth.py", "source_location": "L55", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/3d0e14af8f4114292852140a285773895a868d06b2a9afb341d0360ea69eb826.json b/backend/app/graphify-out/cache/ast/3d0e14af8f4114292852140a285773895a868d06b2a9afb341d0360ea69eb826.json new file mode 100644 index 00000000..495ff230 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/3d0e14af8f4114292852140a285773895a868d06b2a9afb341d0360ea69eb826.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": "L39"}, {"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": "L43"}, {"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": "L61"}, {"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": "L83"}, {"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": "L91"}, {"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": "L102"}, {"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": "L109"}, {"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": "L167"}, {"id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L229"}, {"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": "L248"}, {"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": "L258"}, {"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": "L294"}, {"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": "L326"}, {"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": "L362"}, {"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": "\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": "L44"}, {"id": "api_public_rationale_62", "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": "L62"}, {"id": "api_public_rationale_103", "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": "L103"}, {"id": "api_public_rationale_114", "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": "L114"}, {"id": "api_public_rationale_230", "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": "L230"}, {"id": "api_public_rationale_249", "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": "L249"}, {"id": "api_public_rationale_263", "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": "L263"}, {"id": "api_public_rationale_331", "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": "L331"}, {"id": "api_public_rationale_363", "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": "L363"}], "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": "L33", "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": "L34", "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": "L39", "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": "L43", "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": "L61", "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": "L83", "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": "L91", "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": "L102", "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": "L109", "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": "L167", "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": "L229", "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": "L248", "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": "L258", "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": "L294", "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": "L326", "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": "L362", "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": "L57", "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": "L139", "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": "L161", "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": "L201", "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": "L251", "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": "L252", "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": "L265", "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": "L286", "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": "L301", "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": "L333", "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_build_user_info_payload", "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_62", "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": "L62", "weight": 1.0}, {"source": "api_public_rationale_103", "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": "L103", "weight": 1.0}, {"source": "api_public_rationale_114", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L114", "weight": 1.0}, {"source": "api_public_rationale_230", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L230", "weight": 1.0}, {"source": "api_public_rationale_249", "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": "L249", "weight": 1.0}, {"source": "api_public_rationale_263", "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": "L263", "weight": 1.0}, {"source": "api_public_rationale_331", "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": "L331", "weight": 1.0}, {"source": "api_public_rationale_363", "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": "L363", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_public_avatar_url_field", "callee": "resolve_avatar_display_url", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L40"}, {"caller_nid": "api_public_avatar_url_field", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L40"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L45"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L45"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L51"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L51"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L52"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L53"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L53"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L63"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L64"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L64"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L66"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L67"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L68"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L69"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L70"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L71"}, {"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": "get", "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": "L74"}, {"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": "L78"}, {"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": "L84"}, {"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": "L85"}, {"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": "L86"}, {"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": "L87"}, {"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": "L88"}, {"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": "L104"}, {"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": "L105"}, {"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": "L105"}, {"caller_nid": "api_public_web_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L115"}, {"caller_nid": "api_public_web_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L116"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L118"}, {"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": "L120"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L123"}, {"caller_nid": "api_public_web_login", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L125"}, {"caller_nid": "api_public_web_login", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L126"}, {"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": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L130"}, {"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": "L132"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L134"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L135"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L136"}, {"caller_nid": "api_public_web_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L138"}, {"caller_nid": "api_public_web_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L143"}, {"caller_nid": "api_public_web_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L153"}, {"caller_nid": "api_public_web_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L154"}, {"caller_nid": "api_public_web_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L156"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L169"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L171"}, {"caller_nid": "api_public_refresh_token", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L174"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L175"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L176"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L178"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L179"}, {"caller_nid": "api_public_refresh_token", "callee": "is_session_valid", "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": "L182"}, {"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": "L183"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L184"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "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": "L190"}, {"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": "L192"}, {"caller_nid": "api_public_refresh_token", "callee": "revoke_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L194"}, {"caller_nid": "api_public_refresh_token", "callee": "extend_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L195"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L197"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L198"}, {"caller_nid": "api_public_refresh_token", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L200"}, {"caller_nid": "api_public_refresh_token", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L205"}, {"caller_nid": "api_public_refresh_token", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L215"}, {"caller_nid": "api_public_refresh_token", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L217"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L225"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L231"}, {"caller_nid": "api_public_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L232"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L233"}, {"caller_nid": "api_public_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L235"}, {"caller_nid": "api_public_logout", "callee": "decode_token", "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": "L238"}, {"caller_nid": "api_public_logout", "callee": "revoke_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L240"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L242"}, {"caller_nid": "api_public_logout", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L244"}, {"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": "L252"}, {"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": "L254"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L266"}, {"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": "L268"}, {"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": "L270"}, {"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": "L271"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L274"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L275"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L276"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L277"}, {"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": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L282"}, {"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": "L284"}, {"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": "L285"}, {"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": "L286"}, {"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": "L288"}, {"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": "L290"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L290"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L302"}, {"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": "L304"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"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": "L309"}, {"caller_nid": "api_public_change_current_user_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L310"}, {"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": "L311"}, {"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": "L313"}, {"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": "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": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"caller_nid": "api_public_change_current_user_password", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"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": "L335"}, {"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": "L338"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L340"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "splitext", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L340"}, {"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": "L342"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L344"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L345"}, {"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": "L346"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "read", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L349"}, {"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": "L351"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "len", "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": "L353"}, {"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": "L355"}, {"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": "L356"}, {"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": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L358"}, {"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": "L364"}, {"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": "L365"}, {"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": "L366"}, {"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": "L368"}, {"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": "L370"}, {"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": "L371"}, {"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": "L373"}, {"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": "L382"}, {"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": "L382"}, {"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": "L383"}, {"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": "L387"}, {"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": "L395"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/41e89b0e78be680783c961a2f20b2082963729ff9d0fa7d6d7a808f86599418d.json b/backend/app/graphify-out/cache/ast/41e89b0e78be680783c961a2f20b2082963729ff9d0fa7d6d7a808f86599418d.json new file mode 100644 index 00000000..9bb4a9c0 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/41e89b0e78be680783c961a2f20b2082963729ff9d0fa7d6d7a808f86599418d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "label": "user.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L1"}, {"id": "crud_user_hash_password", "label": "_hash_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L18"}, {"id": "crud_user_usercrudcompat", "label": "_UserCRUDCompat", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L22"}, {"id": "crud_user_usercrudcompat_get_by_user_no", "label": ".get_by_user_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L23"}, {"id": "crud_user_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L38"}, {"id": "crud_user_list_users", "label": "list_users()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L58"}, {"id": "crud_user_get_user", "label": "get_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L109"}, {"id": "crud_user_list_post_ids_for_user", "label": "list_post_ids_for_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L117"}, {"id": "crud_user_set_user_post_ids_only", "label": "set_user_post_ids_only()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L127"}, {"id": "crud_user_list_user_ids_bound_to_post", "label": "list_user_ids_bound_to_post()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L159"}, {"id": "crud_user_sync_post_user_bindings", "label": "sync_post_user_bindings()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L174"}, {"id": "crud_user_get_user_with_relations", "label": "get_user_with_relations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L202"}, {"id": "crud_user_user_no_exists", "label": "user_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L227"}, {"id": "crud_user_replace_associations", "label": "_replace_associations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L236"}, {"id": "crud_user_create_user", "label": "create_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L287"}, {"id": "crud_user_update_user", "label": "update_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L346"}, {"id": "crud_user_soft_delete_user", "label": "soft_delete_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L401"}, {"id": "crud_user_reset_password", "label": "reset_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L411"}, {"id": "crud_user_change_password", "label": "change_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L421"}, {"id": "crud_user_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L440"}, {"id": "crud_user_rationale_1", "label": "\u7528\u6237 CRUD\uff08sys_user + sys_user_role + sys_user_post\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L1"}, {"id": "crud_user_rationale_134", "label": "\u4ec5\u66ff\u6362 sys_user_post\uff0c\u4e0d\u5f71\u54cd sys_user_role\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L134"}, {"id": "crud_user_rationale_181", "label": "\u5c06\u672c\u804c\u4f4d\u7ed1\u5b9a\u7684\u7528\u6237\u96c6\u5408\u8bbe\u4e3a user_ids\uff08\u53ea\u589e\u5220\u672c\u804c\u4f4d\uff0c\u4fdd\u7559\u7528\u6237\u5176\u5b83\u804c\u4f4d\u4e0e\u89d2\u8272\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L181"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "bcrypt", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "app_crud_base", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_hash_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_usercrudcompat", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L22", "weight": 1.0}, {"source": "crud_user_usercrudcompat", "target": "crud_user_usercrudcompat_get_by_user_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_list_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_get_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L109", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_list_post_ids_for_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_set_user_post_ids_only", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_list_user_ids_bound_to_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_sync_post_user_bindings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_get_user_with_relations", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_user_no_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L227", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_replace_associations", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L236", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_create_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_update_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L346", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_soft_delete_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L401", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_reset_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L411", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_change_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "crud_user_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L440", "weight": 1.0}, {"source": "crud_user_list_users", "target": "crud_user_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L106", "weight": 1.0}, {"source": "crud_user_sync_post_user_bindings", "target": "crud_user_get_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L184", "weight": 1.0}, {"source": "crud_user_sync_post_user_bindings", "target": "crud_user_list_user_ids_bound_to_post", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L188", "weight": 1.0}, {"source": "crud_user_sync_post_user_bindings", "target": "crud_user_list_post_ids_for_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L195", "weight": 1.0}, {"source": "crud_user_sync_post_user_bindings", "target": "crud_user_set_user_post_ids_only", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L198", "weight": 1.0}, {"source": "crud_user_get_user_with_relations", "target": "crud_user_get_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L203", "weight": 1.0}, {"source": "crud_user_get_user_with_relations", "target": "crud_user_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L213", "weight": 1.0}, {"source": "crud_user_get_user_with_relations", "target": "crud_user_list_post_ids_for_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L221", "weight": 1.0}, {"source": "crud_user_create_user", "target": "crud_user_hash_password", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L325", "weight": 1.0}, {"source": "crud_user_create_user", "target": "crud_user_replace_associations", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L341", "weight": 1.0}, {"source": "crud_user_update_user", "target": "crud_user_get_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L363", "weight": 1.0}, {"source": "crud_user_update_user", "target": "crud_user_replace_associations", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L391", "weight": 1.0}, {"source": "crud_user_soft_delete_user", "target": "crud_user_get_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L402", "weight": 1.0}, {"source": "crud_user_reset_password", "target": "crud_user_get_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L412", "weight": 1.0}, {"source": "crud_user_reset_password", "target": "crud_user_hash_password", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L415", "weight": 1.0}, {"source": "crud_user_change_password", "target": "crud_user_get_user", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L424", "weight": 1.0}, {"source": "crud_user_change_password", "target": "crud_user_hash_password", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L433", "weight": 1.0}, {"source": "crud_user_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L1", "weight": 1.0}, {"source": "crud_user_rationale_134", "target": "crud_user_set_user_post_ids_only", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L134", "weight": 1.0}, {"source": "crud_user_rationale_181", "target": "crud_user_sync_post_user_bindings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L181", "weight": 1.0}], "raw_calls": [{"caller_nid": "crud_user_hash_password", "callee": "decode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L19"}, {"caller_nid": "crud_user_hash_password", "callee": "hashpw", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L19"}, {"caller_nid": "crud_user_hash_password", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L19"}, {"caller_nid": "crud_user_hash_password", "callee": "gensalt", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L19"}, {"caller_nid": "crud_user_usercrudcompat_get_by_user_no", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L25"}, {"caller_nid": "crud_user_usercrudcompat_get_by_user_no", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L29"}, {"caller_nid": "crud_user_usercrudcompat_get_by_user_no", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L29"}, {"caller_nid": "crud_user_usercrudcompat_get_by_user_no", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L29"}, {"caller_nid": "crud_user_usercrudcompat_get_by_user_no", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L30"}, {"caller_nid": "crud_user_row_to_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L52"}, {"caller_nid": "crud_user_row_to_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L53"}, {"caller_nid": "crud_user_list_users", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L88"}, {"caller_nid": "crud_user_list_users", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L88"}, {"caller_nid": "crud_user_list_users", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L88"}, {"caller_nid": "crud_user_list_users", "callee": "_filtered", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L88"}, {"caller_nid": "crud_user_list_users", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L88"}, {"caller_nid": "crud_user_list_users", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L89"}, {"caller_nid": "crud_user_list_users", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L90"}, {"caller_nid": "crud_user_list_users", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L90"}, {"caller_nid": "crud_user_list_users", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L92"}, {"caller_nid": "crud_user_list_users", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L92"}, {"caller_nid": "crud_user_list_users", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L92"}, {"caller_nid": "crud_user_list_users", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L92"}, {"caller_nid": "crud_user_list_users", "callee": "_filtered", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L92"}, {"caller_nid": "crud_user_list_users", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L93"}, {"caller_nid": "crud_user_list_users", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L100"}, {"caller_nid": "crud_user_list_users", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L103"}, {"caller_nid": "crud_user_list_users", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L103"}, {"caller_nid": "crud_user_list_users", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L103"}, {"caller_nid": "crud_user_list_users", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L103"}, {"caller_nid": "crud_user_list_users", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L106"}, {"caller_nid": "crud_user_list_users", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L106"}, {"caller_nid": "crud_user_get_user", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L111"}, {"caller_nid": "crud_user_get_user", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L111"}, {"caller_nid": "crud_user_get_user", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L111"}, {"caller_nid": "crud_user_get_user", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L112"}, {"caller_nid": "crud_user_list_post_ids_for_user", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L121"}, {"caller_nid": "crud_user_list_post_ids_for_user", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L121"}, {"caller_nid": "crud_user_list_post_ids_for_user", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L121"}, {"caller_nid": "crud_user_list_post_ids_for_user", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L122"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L135"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "fromkeys", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L136"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L137"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L137"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L137"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L138"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L141"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "SysUserPost", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L142"}, {"caller_nid": "crud_user_set_user_post_ids_only", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L143"}, {"caller_nid": "crud_user_list_user_ids_bound_to_post", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L161"}, {"caller_nid": "crud_user_list_user_ids_bound_to_post", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L161"}, {"caller_nid": "crud_user_list_user_ids_bound_to_post", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L161"}, {"caller_nid": "crud_user_list_user_ids_bound_to_post", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L163"}, {"caller_nid": "crud_user_sync_post_user_bindings", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L182"}, {"caller_nid": "crud_user_sync_post_user_bindings", "callee": "fromkeys", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L182"}, {"caller_nid": "crud_user_sync_post_user_bindings", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L186"}, {"caller_nid": "crud_user_sync_post_user_bindings", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L188"}, {"caller_nid": "crud_user_sync_post_user_bindings", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L189"}, {"caller_nid": "crud_user_sync_post_user_bindings", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L199"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L209"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L209"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L209"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L217"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L217"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L217"}, {"caller_nid": "crud_user_get_user_with_relations", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L218"}, {"caller_nid": "crud_user_user_no_exists", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L228"}, {"caller_nid": "crud_user_user_no_exists", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L228"}, {"caller_nid": "crud_user_user_no_exists", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L229"}, {"caller_nid": "crud_user_user_no_exists", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L229"}, {"caller_nid": "crud_user_user_no_exists", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L232"}, {"caller_nid": "crud_user_user_no_exists", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L233"}, {"caller_nid": "crud_user_replace_associations", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L244"}, {"caller_nid": "crud_user_replace_associations", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L245"}, {"caller_nid": "crud_user_replace_associations", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L245"}, {"caller_nid": "crud_user_replace_associations", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L245"}, {"caller_nid": "crud_user_replace_associations", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L246"}, {"caller_nid": "crud_user_replace_associations", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L248"}, {"caller_nid": "crud_user_replace_associations", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L248"}, {"caller_nid": "crud_user_replace_associations", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L248"}, {"caller_nid": "crud_user_replace_associations", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L249"}, {"caller_nid": "crud_user_replace_associations", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L254"}, {"caller_nid": "crud_user_replace_associations", "callee": "SysUserRole", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L254"}, {"caller_nid": "crud_user_replace_associations", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L255"}, {"caller_nid": "crud_user_replace_associations", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L271"}, {"caller_nid": "crud_user_replace_associations", "callee": "SysUserPost", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L271"}, {"caller_nid": "crud_user_replace_associations", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L272"}, {"caller_nid": "crud_user_create_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L306"}, {"caller_nid": "crud_user_create_user", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L308"}, {"caller_nid": "crud_user_create_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L309"}, {"caller_nid": "crud_user_create_user", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L311"}, {"caller_nid": "crud_user_create_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L312"}, {"caller_nid": "crud_user_create_user", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L314"}, {"caller_nid": "crud_user_create_user", "callee": "SysUser", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L316"}, {"caller_nid": "crud_user_create_user", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L317"}, {"caller_nid": "crud_user_create_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L321"}, {"caller_nid": "crud_user_create_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L322"}, {"caller_nid": "crud_user_create_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L329"}, {"caller_nid": "crud_user_create_user", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L332"}, {"caller_nid": "crud_user_create_user", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L334"}, {"caller_nid": "crud_user_create_user", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L337"}, {"caller_nid": "crud_user_create_user", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L338"}, {"caller_nid": "crud_user_create_user", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L339"}, {"caller_nid": "crud_user_create_user", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L342"}, {"caller_nid": "crud_user_update_user", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L365"}, {"caller_nid": "crud_user_update_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L368"}, {"caller_nid": "crud_user_update_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L372"}, {"caller_nid": "crud_user_update_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L374"}, {"caller_nid": "crud_user_update_user", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L384"}, {"caller_nid": "crud_user_update_user", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L387"}, {"caller_nid": "crud_user_update_user", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L388"}, {"caller_nid": "crud_user_update_user", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L396"}, {"caller_nid": "crud_user_update_user", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L397"}, {"caller_nid": "crud_user_soft_delete_user", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L404"}, {"caller_nid": "crud_user_soft_delete_user", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L406"}, {"caller_nid": "crud_user_soft_delete_user", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L407"}, {"caller_nid": "crud_user_soft_delete_user", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L408"}, {"caller_nid": "crud_user_reset_password", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L414"}, {"caller_nid": "crud_user_reset_password", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L416"}, {"caller_nid": "crud_user_reset_password", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L417"}, {"caller_nid": "crud_user_reset_password", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L418"}, {"caller_nid": "crud_user_change_password", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L426"}, {"caller_nid": "crud_user_change_password", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L427"}, {"caller_nid": "crud_user_change_password", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L428"}, {"caller_nid": "crud_user_change_password", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L429"}, {"caller_nid": "crud_user_change_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L430"}, {"caller_nid": "crud_user_change_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L431"}, {"caller_nid": "crud_user_change_password", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L432"}, {"caller_nid": "crud_user_change_password", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L435"}, {"caller_nid": "crud_user_change_password", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L436"}, {"caller_nid": "crud_user_change_password", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L437"}, {"caller_nid": "crud_user_total_pages", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L443"}, {"caller_nid": "crud_user_total_pages", "callee": "ceil", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L443"}, {"caller_nid": "crud_user_total_pages", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L443"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/585e42fac98184466b065ea8c7f9f717297ccd2f645454924ab3e253df9b172c.json b/backend/app/graphify-out/cache/ast/585e42fac98184466b065ea8c7f9f717297ccd2f645454924ab3e253df9b172c.json new file mode 100644 index 00000000..708fffe0 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/585e42fac98184466b065ea8c7f9f717297ccd2f645454924ab3e253df9b172c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "label": "avatar_url.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L1"}, {"id": "core_avatar_url_resolve_avatar_display_url", "label": "resolve_avatar_display_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L8"}, {"id": "core_avatar_url_extract_avatar_storage_key", "label": "extract_avatar_storage_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L27"}, {"id": "core_avatar_url_rationale_1", "label": "\u7528\u6237\u5934\u50cf URL \u89e3\u6790\uff08sys_user.avatar \u53ef\u80fd\u5b58 MinIO \u76f8\u5bf9\u8def\u5f84\u6216\u5b8c\u6574 URL\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L1"}, {"id": "core_avatar_url_rationale_9", "label": "\u670d\u52a1\u7aef\u5185\u90e8\u62fc\u5b8c\u6574 URL\uff08\u90ae\u4ef6\u7b49\uff09\uff1bWeb API \u5e94\u8fd4\u56de\u5e93\u4e2d\u539f\u59cb\u8def\u5f84\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L9"}, {"id": "core_avatar_url_rationale_28", "label": "\u4ece upload \u8fd4\u56de\u503c\u6216\u5386\u53f2\u5b8c\u6574 URL \u4e2d\u63d0\u53d6 avatar/ \u76f8\u5bf9\u8def\u5f84\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L28"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "app_core_storage", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "core_avatar_url_resolve_avatar_display_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "target": "core_avatar_url_extract_avatar_storage_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L27", "weight": 1.0}, {"source": "core_avatar_url_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_avatar_url_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L1", "weight": 1.0}, {"source": "core_avatar_url_rationale_9", "target": "core_avatar_url_resolve_avatar_display_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L9", "weight": 1.0}, {"source": "core_avatar_url_rationale_28", "target": "core_avatar_url_extract_avatar_storage_key", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L28", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L12"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L12"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L15"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L16"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L16"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L16"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "get_url", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L19"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L19"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "rstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L21"}, {"caller_nid": "core_avatar_url_resolve_avatar_display_url", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L23"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L29"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "rstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L32"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L33"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L34"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L34"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "find", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L36"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L36"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L38"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L38"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L39"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L39"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L39"}, {"caller_nid": "core_avatar_url_extract_avatar_storage_key", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py", "source_location": "L40"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/630a0cd5b4f180b99a4a28bdb561e8ddb87a23c63b3c99e02f19393d1c7913fa.json b/backend/app/graphify-out/cache/ast/630a0cd5b4f180b99a4a28bdb561e8ddb87a23c63b3c99e02f19393d1c7913fa.json new file mode 100644 index 00000000..30982894 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/630a0cd5b4f180b99a4a28bdb561e8ddb87a23c63b3c99e02f19393d1c7913fa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "label": "auth.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L1"}, {"id": "core_auth_redis_session_enabled", "label": "_redis_session_enabled()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L30"}, {"id": "core_auth_get_redis_client", "label": "_get_redis_client()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L35"}, {"id": "core_auth_session_key", "label": "_session_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L52"}, {"id": "core_auth_refresh_key", "label": "_refresh_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L56"}, {"id": "core_auth_store_session", "label": "store_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L60"}, {"id": "core_auth_revoke_session", "label": "revoke_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L68"}, {"id": "core_auth_extend_session", "label": "extend_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L76"}, {"id": "core_auth_is_session_valid", "label": "is_session_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L92"}, {"id": "core_auth_store_refresh_token", "label": "store_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L107"}, {"id": "core_auth_is_refresh_token_valid", "label": "is_refresh_token_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L115"}, {"id": "core_auth_revoke_refresh_token", "label": "revoke_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L127"}, {"id": "core_auth_create_access_token", "label": "create_access_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L134"}, {"id": "core_auth_create_refresh_token", "label": "create_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L158"}, {"id": "core_auth_decode_token", "label": "decode_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L174"}, {"id": "core_auth_get_current_user_by_token", "label": "get_current_user_by_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L187"}, {"id": "core_auth_get_current_user", "label": "get_current_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L248"}, {"id": "core_auth_get_current_user_simple", "label": "get_current_user_simple()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L256"}, {"id": "core_auth_get_client_ip", "label": "get_client_ip()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L275"}, {"id": "core_auth_rationale_77", "label": "\u5237\u65b0\u4f1a\u8bdd TTL\uff08refreshToken \u7eed\u671f\uff1b\u5df2\u767b\u5f55\u7528\u6237\u6bcf\u6b21 API \u6821\u9a8c\u901a\u8fc7\u540e\u6ed1\u52a8\u7eed\u671f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L77"}, {"id": "core_auth_rationale_108", "label": "\u5199\u5165 refreshToken\uff08\u7528\u4e8e one-time \u4f7f\u7528/\u540a\u9500\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L108"}, {"id": "core_auth_rationale_191", "label": "\u6839\u636e token \u83b7\u53d6\u5f53\u524d\u7528\u6237\uff08\u5305\u542b Redis \u4f1a\u8bdd\u6821\u9a8c\uff1b\u4f1a\u8bdd\u6ed1\u52a8\u7eed\u671f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L191"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "redis_asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "redis", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "fastapi_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "jose", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_context", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_avatar_url", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_redis_session_enabled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_redis_client", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_session_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_refresh_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_store_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L60", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_revoke_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_extend_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_is_session_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L92", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_store_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L107", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_is_refresh_token_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_revoke_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_create_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L134", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_create_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_decode_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user_by_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L248", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user_simple", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L256", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_client_ip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L275", "weight": 1.0}, {"source": "core_auth_get_redis_client", "target": "core_auth_redis_session_enabled", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L37", "weight": 1.0}, {"source": "core_auth_store_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L62", "weight": 1.0}, {"source": "core_auth_store_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L65", "weight": 1.0}, {"source": "core_auth_revoke_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L70", "weight": 1.0}, {"source": "core_auth_revoke_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L73", "weight": 1.0}, {"source": "core_auth_extend_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L80", "weight": 1.0}, {"source": "core_auth_extend_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L85", "weight": 1.0}, {"source": "core_auth_is_session_valid", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L94", "weight": 1.0}, {"source": "core_auth_is_session_valid", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L101", "weight": 1.0}, {"source": "core_auth_store_refresh_token", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L109", "weight": 1.0}, {"source": "core_auth_store_refresh_token", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L112", "weight": 1.0}, {"source": "core_auth_is_refresh_token_valid", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L116", "weight": 1.0}, {"source": "core_auth_is_refresh_token_valid", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L122", "weight": 1.0}, {"source": "core_auth_revoke_refresh_token", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L128", "weight": 1.0}, {"source": "core_auth_revoke_refresh_token", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L131", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_decode_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L192", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_is_session_valid", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L197", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_extend_session", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L204", "weight": 1.0}, {"source": "core_auth_get_current_user", "target": "core_auth_get_current_user_by_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L253", "weight": 1.0}, {"source": "core_auth_get_current_user_simple", "target": "core_auth_decode_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L258", "weight": 1.0}, {"source": "core_auth_rationale_77", "target": "core_auth_extend_session", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L77", "weight": 1.0}, {"source": "core_auth_rationale_108", "target": "core_auth_store_refresh_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L108", "weight": 1.0}, {"source": "core_auth_rationale_191", "target": "core_auth_get_current_user_by_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L191", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_auth_redis_session_enabled", "callee": "bool", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L32"}, {"caller_nid": "core_auth_get_redis_client", "callee": "Redis", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L40"}, {"caller_nid": "core_auth_store_session", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L65"}, {"caller_nid": "core_auth_revoke_session", "callee": "delete", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L73"}, {"caller_nid": "core_auth_extend_session", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L84"}, {"caller_nid": "core_auth_extend_session", "callee": "expire", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L85"}, {"caller_nid": "core_auth_is_session_valid", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L101"}, {"caller_nid": "core_auth_is_session_valid", "callee": "exists", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L101"}, {"caller_nid": "core_auth_store_refresh_token", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L112"}, {"caller_nid": "core_auth_is_refresh_token_valid", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L122"}, {"caller_nid": "core_auth_is_refresh_token_valid", "callee": "exists", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L122"}, {"caller_nid": "core_auth_revoke_refresh_token", "callee": "delete", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L131"}, {"caller_nid": "core_auth_create_access_token", "callee": "copy", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L141"}, {"caller_nid": "core_auth_create_access_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L143"}, {"caller_nid": "core_auth_create_access_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L145"}, {"caller_nid": "core_auth_create_access_token", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L145"}, {"caller_nid": "core_auth_create_access_token", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L146"}, {"caller_nid": "core_auth_create_access_token", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L154"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "copy", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L160"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L161"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L161"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L162"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L170"}, {"caller_nid": "core_auth_decode_token", "callee": "decode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L177"}, {"caller_nid": "core_auth_decode_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L180"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L194"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L195"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L198"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L207"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L212"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L213"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L214"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L219"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L220"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "resolve_web_role_for_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L225"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L227"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L227"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L228"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L228"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L229"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L231"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L241"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L242"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L242"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "resolve_avatar_display_url", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L243"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L259"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L261"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L265"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L265"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L268"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L269"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L270"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L271"}, {"caller_nid": "core_auth_get_client_ip", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L277"}, {"caller_nid": "core_auth_get_client_ip", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L279"}, {"caller_nid": "core_auth_get_client_ip", "callee": "split", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L279"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/69f5dd7c6e637bb2ec2bbbca349b9df8b897edbb35da71c9291681bc3c22a4df.json b/backend/app/graphify-out/cache/ast/69f5dd7c6e637bb2ec2bbbca349b9df8b897edbb35da71c9291681bc3c22a4df.json new file mode 100644 index 00000000..e5239e17 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/69f5dd7c6e637bb2ec2bbbca349b9df8b897edbb35da71c9291681bc3c22a4df.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": "L36"}, {"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": "L44"}, {"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": "L62"}, {"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": "L84"}, {"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": "L92"}, {"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": "L103"}, {"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": "L110"}, {"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": "L168"}, {"id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L230"}, {"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": "L249"}, {"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": "L259"}, {"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": "L294"}, {"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": "L322"}, {"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_45", "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": "L45"}, {"id": "api_public_rationale_63", "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": "L63"}, {"id": "api_public_rationale_104", "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": "L104"}, {"id": "api_public_rationale_115", "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": "L115"}, {"id": "api_public_rationale_231", "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": "L231"}, {"id": "api_public_rationale_250", "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": "L250"}, {"id": "api_public_rationale_264", "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": "L264"}, {"id": "api_public_rationale_323", "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": "L323"}], "edges": [{"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": "L2", "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": "L4", "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": "L5", "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": "L6", "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": "L8", "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": "L9", "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": "L10", "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": "L23", "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": "L24", "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": "L25", "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": "L26", "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": "L27", "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": "L28", "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": "L29", "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": "L30", "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": "L31", "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": "L36", "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": "L44", "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": "L62", "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": "L84", "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": "L92", "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": "L103", "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": "L110", "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": "L168", "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": "L230", "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": "L249", "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": "L259", "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": "L294", "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": "L322", "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": "L58", "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": "L140", "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": "L162", "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": "L202", "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": "L252", "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": "L253", "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": "L266", "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": "L286", "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": "L301", "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_45", "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": "L45", "weight": 1.0}, {"source": "api_public_rationale_63", "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": "L63", "weight": 1.0}, {"source": "api_public_rationale_104", "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": "L104", "weight": 1.0}, {"source": "api_public_rationale_115", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L115", "weight": 1.0}, {"source": "api_public_rationale_231", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L231", "weight": 1.0}, {"source": "api_public_rationale_250", "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": "L250", "weight": 1.0}, {"source": "api_public_rationale_264", "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": "L264", "weight": 1.0}, {"source": "api_public_rationale_323", "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": "L323", "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": "L37"}, {"caller_nid": "api_public_avatar_url_field", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L40"}, {"caller_nid": "api_public_avatar_url_field", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L40"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L46"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L46"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L52"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L52"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L53"}, {"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_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L64"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L65"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L65"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L67"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L68"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L69"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L70"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L71"}, {"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": "get", "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": "L74"}, {"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": "L79"}, {"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": "L85"}, {"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": "L86"}, {"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": "L87"}, {"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": "L88"}, {"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": "L89"}, {"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": "L105"}, {"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": "L106"}, {"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": "L106"}, {"caller_nid": "api_public_web_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L116"}, {"caller_nid": "api_public_web_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L117"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L119"}, {"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": "L121"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L124"}, {"caller_nid": "api_public_web_login", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L126"}, {"caller_nid": "api_public_web_login", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L127"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L128"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L131"}, {"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": "L133"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L135"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L136"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L137"}, {"caller_nid": "api_public_web_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L139"}, {"caller_nid": "api_public_web_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L144"}, {"caller_nid": "api_public_web_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L154"}, {"caller_nid": "api_public_web_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L155"}, {"caller_nid": "api_public_web_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L157"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L170"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L172"}, {"caller_nid": "api_public_refresh_token", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L175"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L176"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L177"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L179"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L180"}, {"caller_nid": "api_public_refresh_token", "callee": "is_session_valid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L182"}, {"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": "is_refresh_token_valid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L184"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L185"}, {"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": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L188"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L191"}, {"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": "L193"}, {"caller_nid": "api_public_refresh_token", "callee": "revoke_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L195"}, {"caller_nid": "api_public_refresh_token", "callee": "extend_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L196"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L198"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L199"}, {"caller_nid": "api_public_refresh_token", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L201"}, {"caller_nid": "api_public_refresh_token", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L206"}, {"caller_nid": "api_public_refresh_token", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L216"}, {"caller_nid": "api_public_refresh_token", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L218"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L226"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L232"}, {"caller_nid": "api_public_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L233"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L234"}, {"caller_nid": "api_public_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L236"}, {"caller_nid": "api_public_logout", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L238"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L239"}, {"caller_nid": "api_public_logout", "callee": "revoke_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L241"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L243"}, {"caller_nid": "api_public_logout", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L245"}, {"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": "L253"}, {"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": "L255"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L267"}, {"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": "L269"}, {"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": "L271"}, {"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": "L272"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L275"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L276"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L277"}, {"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": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L282"}, {"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": "L284"}, {"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": "L285"}, {"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": "L286"}, {"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": "L288"}, {"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": "L290"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L290"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L302"}, {"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": "L304"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L306"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"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": "L309"}, {"caller_nid": "api_public_change_current_user_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L310"}, {"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": "L311"}, {"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": "L313"}, {"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": "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": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"caller_nid": "api_public_change_current_user_password", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"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": "L324"}, {"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": "L325"}, {"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": "L326"}, {"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": "L328"}, {"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": "L330"}, {"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": "L331"}, {"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": "L333"}, {"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": "L342"}, {"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": "L342"}, {"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": "L343"}, {"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": "L347"}, {"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": "L355"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/6cc565d6f62deaf3fea9fd20db15f985b8347156c3e2d8755db5d55f34062f07.json b/backend/app/graphify-out/cache/ast/6cc565d6f62deaf3fea9fd20db15f985b8347156c3e2d8755db5d55f34062f07.json new file mode 100644 index 00000000..78a00e9e --- /dev/null +++ b/backend/app/graphify-out/cache/ast/6cc565d6f62deaf3fea9fd20db15f985b8347156c3e2d8755db5d55f34062f07.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "label": "collection_protocol.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1"}, {"id": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "label": "get_protocol_nos_used_in_protocols()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L52"}, {"id": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "label": "get_sample_codes_used_in_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L86"}, {"id": "crud_collection_protocol_validate_sample_codes_not_used", "label": "validate_sample_codes_not_used()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L120"}, {"id": "crud_collection_protocol_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L153"}, {"id": "crud_collection_protocol_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L159"}, {"id": "crud_collection_protocol_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L163"}, {"id": "crud_collection_protocol_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L171"}, {"id": "crud_collection_protocol_today_yyyymmdd", "label": "_today_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L177"}, {"id": "crud_collection_protocol_normalize_yyyymmdd_date", "label": "_normalize_yyyymmdd_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L181"}, {"id": "crud_collection_protocol_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L200"}, {"id": "crud_collection_protocol_pop_attachment_urls", "label": "_pop_attachment_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L211"}, {"id": "crud_collection_protocol_attachments_to_urls", "label": "attachments_to_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L222"}, {"id": "crud_collection_protocol_normalize_attachment_url_key", "label": "_normalize_attachment_url_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L241"}, {"id": "crud_collection_protocol_format_attachment_file_size", "label": "_format_attachment_file_size()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L250"}, {"id": "crud_collection_protocol_lookup_attachment_by_url", "label": "_lookup_attachment_by_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L258"}, {"id": "crud_collection_protocol_urls_to_attachment_list", "label": "urls_to_attachment_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L282"}, {"id": "crud_collection_protocol_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L314"}, {"id": "crud_collection_protocol_protocol_to_dict", "label": "_protocol_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L322"}, {"id": "crud_collection_protocol_payment_to_dict", "label": "_payment_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L347"}, {"id": "crud_collection_protocol_detail_to_dict", "label": "_detail_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L365"}, {"id": "crud_collection_protocol_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L411"}, {"id": "crud_collection_protocol_party_customer_to_dict", "label": "_party_customer_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L433"}, {"id": "crud_collection_protocol_collection_info_to_dict", "label": "_collection_info_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L467"}, {"id": "crud_collection_protocol_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L485"}, {"id": "crud_collection_protocol_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L509"}, {"id": "crud_collection_protocol_storage_cert_to_dict", "label": "_storage_cert_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L529"}, {"id": "crud_collection_protocol_format_newborn_info", "label": "_format_newborn_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L544"}, {"id": "crud_collection_protocol_format_sample_collect_summary", "label": "_format_sample_collect_summary()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L561"}, {"id": "crud_collection_protocol_format_storage_cert_sample_info", "label": "_format_storage_cert_sample_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L579"}, {"id": "crud_collection_protocol_pick_storage_in_date", "label": "_pick_storage_in_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L596"}, {"id": "crud_collection_protocol_load_protocol_storage_in_date_map", "label": "_load_protocol_storage_in_date_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L604"}, {"id": "crud_collection_protocol_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L635"}, {"id": "crud_collection_protocol_list_storage_certs", "label": "list_storage_certs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L649"}, {"id": "crud_collection_protocol_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L782"}, {"id": "crud_collection_protocol_yyyymmdd_from_date_param", "label": "_yyyymmdd_from_date_param()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L789"}, {"id": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "label": "_storage_in_date_to_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L797"}, {"id": "crud_collection_protocol_list_collection_protocols", "label": "list_collection_protocols()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L802"}, {"id": "crud_collection_protocol_get_collection_protocol", "label": "get_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1037"}, {"id": "crud_collection_protocol_get_payment_by_protocol_id", "label": "get_payment_by_protocol_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1056"}, {"id": "crud_collection_protocol_get_protocol_detail_bundle", "label": "get_protocol_detail_bundle()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1070"}, {"id": "crud_collection_protocol_list_audits", "label": "list_audits()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1193"}, {"id": "crud_collection_protocol_create_audit", "label": "create_audit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1253"}, {"id": "crud_collection_protocol_detail_query_with_protocol", "label": "_detail_query_with_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1290"}, {"id": "crud_collection_protocol_apply_payment_detail_list_filters", "label": "_apply_payment_detail_list_filters()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1309"}, {"id": "crud_collection_protocol_rows_to_payment_detail_dicts", "label": "_rows_to_payment_detail_dicts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1349"}, {"id": "crud_collection_protocol_list_receipt_confirm_details", "label": "list_receipt_confirm_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1383"}, {"id": "crud_collection_protocol_list_receipt_confirmed_details", "label": "list_receipt_confirmed_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1420"}, {"id": "crud_collection_protocol_confirm_receipt", "label": "confirm_receipt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1466"}, {"id": "crud_collection_protocol_list_refund_confirm_details", "label": "list_refund_confirm_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1505"}, {"id": "crud_collection_protocol_list_refund_confirmed_details", "label": "list_refund_confirmed_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1550"}, {"id": "crud_collection_protocol_confirm_refund", "label": "confirm_refund()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1598"}, {"id": "crud_collection_protocol_get_payment_detail_or_raise", "label": "_get_payment_detail_or_raise()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1637"}, {"id": "crud_collection_protocol_apply_submit_receipt_finance", "label": "_apply_submit_receipt_finance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1659"}, {"id": "crud_collection_protocol_submit_receipt_finance", "label": "submit_receipt_finance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1671"}, {"id": "crud_collection_protocol_batch_submit_receipt_finance", "label": "batch_submit_receipt_finance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1686"}, {"id": "crud_collection_protocol_apply_submit_refund_finance", "label": "_apply_submit_refund_finance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1704"}, {"id": "crud_collection_protocol_submit_refund_finance", "label": "submit_refund_finance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1724"}, {"id": "crud_collection_protocol_batch_submit_refund_finance", "label": "batch_submit_refund_finance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1748"}, {"id": "crud_collection_protocol_party_customer_map_by_protocol_ids", "label": "_party_customer_map_by_protocol_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1775"}, {"id": "crud_collection_protocol_list_payment_details_page", "label": "list_payment_details_page()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1799"}, {"id": "crud_collection_protocol_classify_installment_warning", "label": "_classify_installment_warning()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1879"}, {"id": "crud_collection_protocol_list_installment_warning", "label": "list_installment_warning()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1891"}, {"id": "crud_collection_protocol_create_collection_protocol", "label": "create_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1944"}, {"id": "crud_collection_protocol_update_collection_protocol", "label": "update_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1987"}, {"id": "crud_collection_protocol_soft_delete_collection_protocol", "label": "soft_delete_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2052"}, {"id": "crud_collection_protocol_get_party_customer", "label": "get_party_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2076"}, {"id": "crud_collection_protocol_upsert_party_customer", "label": "upsert_party_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2090"}, {"id": "crud_collection_protocol_get_collection_info", "label": "get_collection_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2168"}, {"id": "crud_collection_protocol_upsert_collection_info", "label": "upsert_collection_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2182"}, {"id": "crud_collection_protocol_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2233"}, {"id": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "label": "_migrate_sample_child_refs_on_replace()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2248"}, {"id": "crud_collection_protocol_save_samples", "label": "save_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2283"}, {"id": "crud_collection_protocol_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2370"}, {"id": "crud_collection_protocol_soft_delete_transports_for_protocol", "label": "_soft_delete_transports_for_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2389"}, {"id": "crud_collection_protocol_save_sample_transports", "label": "save_sample_transports()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2405"}, {"id": "crud_collection_protocol_get_storage_cert", "label": "get_storage_cert()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2463"}, {"id": "crud_collection_protocol_add_months_yyyymmdd", "label": "_add_months_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2477"}, {"id": "crud_collection_protocol_calc_installment_due_amounts", "label": "_calc_installment_due_amounts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2492"}, {"id": "crud_collection_protocol_align_fq_payment_details_payload", "label": "align_fq_payment_details_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2512"}, {"id": "crud_collection_protocol_list_payment_details", "label": "list_payment_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2574"}, {"id": "crud_collection_protocol_upsert_payment", "label": "upsert_payment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2597"}, {"id": "crud_collection_protocol_save_payment_details", "label": "save_payment_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2658"}, {"id": "crud_collection_protocol_upsert_storage_cert", "label": "upsert_storage_cert()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2761"}, {"id": "crud_collection_protocol_fullmoon_todo_empty_dict", "label": "_fullmoon_todo_empty_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2810"}, {"id": "crud_collection_protocol_fullmoon_todo_detail_dict", "label": "_fullmoon_todo_detail_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2829"}, {"id": "crud_collection_protocol_fullmoon_todo_to_dict", "label": "_fullmoon_todo_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2847"}, {"id": "crud_collection_protocol_get_fullmoon_todo", "label": "get_fullmoon_todo()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2871"}, {"id": "crud_collection_protocol_upsert_fullmoon_todo", "label": "upsert_fullmoon_todo()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2889"}, {"id": "crud_collection_protocol_rationale_1", "label": "\u91c7\u96c6\u534f\u8bae\u5355 / \u5ba1\u6838 / \u7f34\u8d39\u660e\u7ec6 CRUD\uff08\u7ec6\u80de\u5b58\u50a8 2.2.6\uff5e2.2.10\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1"}, {"id": "crud_collection_protocol_rationale_58", "label": "\u8fd4\u56de\u5df2\u5728\u91c7\u96c6\u534f\u8bae\u5355\u6216\u79d1\u7814\u6350\u8d60\u5355\u4e2d\u5360\u7528\u7684\u534f\u8bae\u7f16\u53f7\u96c6\u5408\uff08\u540c\u79df\u6237\u3001\u672a\u5220\u9664\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L58"}, {"id": "crud_collection_protocol_rationale_92", "label": "\u8fd4\u56de\u5df2\u5728\u91c7\u96c6\u534f\u8bae\u5355\u6216\u79d1\u7814\u6350\u8d60\u5355\u6837\u672c\u8868\u4e2d\u5360\u7528\u7684\u6837\u672c\u7f16\u7801\u96c6\u5408\uff08\u540c\u79df\u6237\u3001\u672a\u5220\u9664\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L92"}, {"id": "crud_collection_protocol_rationale_128", "label": "\u521b\u5efa/\u66f4\u65b0\u6837\u672c\u884c\u524d\u6821\u9a8c\uff1a\u6837\u672c\u7f16\u7801\u4e0d\u5f97\u5df2\u88ab\u4efb\u4e00\u4e1a\u52a1\u5355\u5360\u7528\uff08\u8f6c\u79fb\u914d\u5bf9\u5355\u8c41\u514d\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L128"}, {"id": "crud_collection_protocol_rationale_182", "label": "\u5c06 YYYYMMDD / YYYY-MM-DD \u7b49\u683c\u5f0f\u89c4\u8303\u4e3a 8 \u4f4d\u65e5\u671f\u5b57\u7b26\u4e32\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L182"}, {"id": "crud_collection_protocol_rationale_201", "label": "\u5c06\u524d\u7aef camelCase \u5b57\u6bb5\u540d\u8f6c\u4e3a\u6570\u636e\u5e93 snake_case\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L201"}, {"id": "crud_collection_protocol_rationale_212", "label": "\u4ece\u4fdd\u5b58\u8f7d\u8377\u4e2d\u53d6\u51fa\u9644\u4ef6\u5b57\u6bb5\uff08\u652f\u6301 snake/camel\u3001URL \u4e32\u6216\u9644\u4ef6\u5bf9\u8c61\u5217\u8868\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L212"}, {"id": "crud_collection_protocol_rationale_223", "label": "\u9644\u4ef6\u5217\u8868\u6216\u5b57\u7b26\u4e32 \u2192 \u9017\u53f7\u5206\u9694 URL\uff08MinIO\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L223"}, {"id": "crud_collection_protocol_rationale_287", "label": "\u9017\u53f7\u5206\u9694 URL \u2192 \u524d\u7aef\u9644\u4ef6\u5361\u7247\u7ed3\u6784\uff1b\u6709 db \u65f6\u4ece biz_attachment \u53d6\u539f\u59cb\u6587\u4ef6\u540d\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L287"}, {"id": "crud_collection_protocol_rationale_562", "label": "\u6c47\u603b\u534f\u8bae\u5355\u4e0b\u5404\u6837\u672c\u91c7\u96c6\u60c5\u51b5\uff0c\u5982\u300c1\u4e2a\u5df2\u91c7\u96c6\uff0c1\u4e2a\u672a\u91c7\u96c6\u300d\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L562"}, {"id": "crud_collection_protocol_rationale_609", "label": "\u4ece\u5165\u5e93\u653e\u884c\u5ba1\u6838\u8bb0\u5f55\u8865\u5168\u5165\u5e93\u65e5\u671f\uff08\u5386\u53f2\u6570\u636e\u53ef\u80fd\u672a\u5199\u5165\u6837\u672c storage_in_date\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L609"}, {"id": "crud_collection_protocol_rationale_1356", "label": "\u7f34\u8d39\u660e\u7ec6\u884c \u2192 \u524d\u7aef\u5b57\u5178\uff08\u542b\u534f\u8bae\u3001\u5ba2\u6237\u3001\u8f6c\u8d26\u9644\u4ef6\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1356"}, {"id": "crud_collection_protocol_rationale_1880", "label": "overdue | warn | upcoming \u2014 due \u4e3a YYYYMMDD", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1880"}, {"id": "crud_collection_protocol_rationale_2256", "label": "\u534f\u8bae\u6837\u672c\u884c\u91cd\u5efa\u540e\uff0c\u5c06\u63a5\u6536/\u8d28\u68c0\u5de5\u5355\u7684 protocol_sample_id \u8fc1\u79fb\u5230\u65b0\u6837\u672c ID\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2256"}, {"id": "crud_collection_protocol_rationale_2834", "label": "\u534f\u8bae\u8be6\u60c5 bundle \u7528\uff1a\u6ee1\u6708\u5f85\u529e\u5b57\u6bb5 + \u7531\u5206\u5a29\u65e5\u63a8\u7b97\u7684\u6ee1\u6708\u65e5\u671f\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2834"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "calendar", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_crud_base", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_crud_biz_no_generator", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_crud_protocol_donation_convert", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_services_protocol_payment_installment", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_models_research_donation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L86", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_validate_sample_codes_not_used", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L153", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_fmt_dt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_dec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L163", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_optional_decimal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L171", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_today_yyyymmdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_normalize_yyyymmdd_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L181", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_normalize_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_pop_attachment_urls", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L211", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_attachments_to_urls", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L222", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_normalize_attachment_url_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_format_attachment_file_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_lookup_attachment_by_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L258", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_urls_to_attachment_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_user_nick_name_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L314", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_protocol_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L322", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_payment_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L347", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_detail_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L365", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_audit_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L411", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_party_customer_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L433", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_collection_info_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_sample_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L485", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_transport_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L509", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_storage_cert_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L529", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_format_newborn_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L544", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_format_sample_collect_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_format_storage_cert_sample_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L579", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_pick_storage_in_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L596", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_load_protocol_storage_in_date_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_load_sample_type_name_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_storage_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L649", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_normalize_date_bound", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L782", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_yyyymmdd_from_date_param", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L789", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L797", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_collection_protocols", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L802", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_collection_protocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1037", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_payment_by_protocol_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1056", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_protocol_detail_bundle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1070", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_audits", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_create_audit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1253", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_detail_query_with_protocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1290", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_apply_payment_detail_list_filters", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1309", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1349", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_receipt_confirm_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_receipt_confirmed_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1420", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_confirm_receipt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1466", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_refund_confirm_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1505", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_refund_confirmed_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_confirm_refund", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1598", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1637", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_apply_submit_receipt_finance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1659", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_submit_receipt_finance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_batch_submit_receipt_finance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1686", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_apply_submit_refund_finance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1704", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_submit_refund_finance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1724", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_batch_submit_refund_finance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1748", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_party_customer_map_by_protocol_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1775", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_yyyymmdd_from_date_param", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1792", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_payment_details_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1799", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_classify_installment_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1879", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_installment_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1891", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_create_collection_protocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_update_collection_protocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1987", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_soft_delete_collection_protocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2052", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_party_customer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2076", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_upsert_party_customer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2090", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_collection_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_upsert_collection_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_samples", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2233", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2248", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_save_samples", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_sample_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2370", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_soft_delete_transports_for_protocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2389", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_save_sample_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_storage_cert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2463", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_add_months_yyyymmdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2477", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_calc_installment_due_amounts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2492", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_align_fq_payment_details_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2512", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_list_payment_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2574", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_upsert_payment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2597", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_save_payment_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2658", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_upsert_storage_cert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2761", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_fullmoon_todo_empty_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2810", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_fullmoon_todo_detail_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2829", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_fullmoon_todo_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2847", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_get_fullmoon_todo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2871", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "target": "crud_collection_protocol_upsert_fullmoon_todo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2889", "weight": 1.0}, {"source": "crud_collection_protocol_validate_sample_codes_not_used", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L131", "weight": 1.0}, {"source": "crud_collection_protocol_validate_sample_codes_not_used", "target": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L137", "weight": 1.0}, {"source": "crud_collection_protocol_pop_attachment_urls", "target": "crud_collection_protocol_attachments_to_urls", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L216", "weight": 1.0}, {"source": "crud_collection_protocol_lookup_attachment_by_url", "target": "crud_collection_protocol_normalize_attachment_url_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L263", "weight": 1.0}, {"source": "crud_collection_protocol_urls_to_attachment_list", "target": "crud_collection_protocol_lookup_attachment_by_url", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L295", "weight": 1.0}, {"source": "crud_collection_protocol_urls_to_attachment_list", "target": "crud_collection_protocol_format_attachment_file_size", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L304", "weight": 1.0}, {"source": "crud_collection_protocol_protocol_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L330", "weight": 1.0}, {"source": "crud_collection_protocol_payment_to_dict", "target": "crud_collection_protocol_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L352", "weight": 1.0}, {"source": "crud_collection_protocol_payment_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L360", "weight": 1.0}, {"source": "crud_collection_protocol_detail_to_dict", "target": "crud_collection_protocol_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L389", "weight": 1.0}, {"source": "crud_collection_protocol_detail_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L391", "weight": 1.0}, {"source": "crud_collection_protocol_audit_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L428", "weight": 1.0}, {"source": "crud_collection_protocol_party_customer_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L451", "weight": 1.0}, {"source": "crud_collection_protocol_party_customer_to_dict", "target": "crud_collection_protocol_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L456", "weight": 1.0}, {"source": "crud_collection_protocol_collection_info_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L475", "weight": 1.0}, {"source": "crud_collection_protocol_sample_to_dict", "target": "crud_collection_protocol_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L492", "weight": 1.0}, {"source": "crud_collection_protocol_sample_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L504", "weight": 1.0}, {"source": "crud_collection_protocol_transport_to_dict", "target": "crud_collection_protocol_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L518", "weight": 1.0}, {"source": "crud_collection_protocol_transport_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L519", "weight": 1.0}, {"source": "crud_collection_protocol_storage_cert_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L539", "weight": 1.0}, {"source": "crud_collection_protocol_format_newborn_info", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L557", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_load_sample_type_name_map", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L723", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_sample_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L725", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_load_protocol_storage_in_date_map", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L727", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_yyyymmdd_from_date_param", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L731", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_pick_storage_in_date", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L740", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L742", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_storage_cert_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L749", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L761", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_format_newborn_info", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L764", "weight": 1.0}, {"source": "crud_collection_protocol_list_storage_certs", "target": "crud_collection_protocol_format_storage_cert_sample_info", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L765", "weight": 1.0}, {"source": "crud_collection_protocol_list_collection_protocols", "target": "crud_collection_protocol_party_customer_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L909", "weight": 1.0}, {"source": "crud_collection_protocol_list_collection_protocols", "target": "crud_collection_protocol_collection_info_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L920", "weight": 1.0}, {"source": "crud_collection_protocol_list_collection_protocols", "target": "crud_collection_protocol_protocol_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L936", "weight": 1.0}, {"source": "crud_collection_protocol_list_collection_protocols", "target": "crud_collection_protocol_load_sample_type_name_map", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L956", "weight": 1.0}, {"source": "crud_collection_protocol_list_collection_protocols", "target": "crud_collection_protocol_format_sample_collect_summary", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1032", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_get_collection_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1077", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_get_payment_by_protocol_id", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1082", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_get_party_customer", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1083", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_get_collection_info", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1084", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_list_samples", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1085", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_get_storage_cert", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1086", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_protocol_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1087", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_collection_info_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1088", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_user_nick_name_map", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1094", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_payment_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1117", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_party_customer_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1118", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_list_sample_transports", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1120", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_transport_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1121", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_sample_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1154", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_storage_cert_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1162", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_get_fullmoon_todo", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1163", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_fullmoon_todo_detail_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1165", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_urls_to_attachment_list", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1166", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_list_payment_details", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1168", "weight": 1.0}, {"source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_detail_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1171", "weight": 1.0}, {"source": "crud_collection_protocol_list_audits", "target": "crud_collection_protocol_audit_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1243", "weight": 1.0}, {"source": "crud_collection_protocol_create_audit", "target": "crud_collection_protocol_get_collection_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1262", "weight": 1.0}, {"source": "crud_collection_protocol_apply_payment_detail_list_filters", "target": "crud_collection_protocol_yyyymmdd_from_date_param", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1339", "weight": 1.0}, {"source": "crud_collection_protocol_rows_to_payment_detail_dicts", "target": "crud_collection_protocol_party_customer_map_by_protocol_ids", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1360", "weight": 1.0}, {"source": "crud_collection_protocol_rows_to_payment_detail_dicts", "target": "crud_collection_protocol_detail_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1365", "weight": 1.0}, {"source": "crud_collection_protocol_rows_to_payment_detail_dicts", "target": "crud_collection_protocol_urls_to_attachment_list", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1376", "weight": 1.0}, {"source": "crud_collection_protocol_list_receipt_confirm_details", "target": "crud_collection_protocol_detail_query_with_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1396", "weight": 1.0}, {"source": "crud_collection_protocol_list_receipt_confirm_details", "target": "crud_collection_protocol_apply_payment_detail_list_filters", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1397", "weight": 1.0}, {"source": "crud_collection_protocol_list_receipt_confirm_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1417", "weight": 1.0}, {"source": "crud_collection_protocol_list_receipt_confirmed_details", "target": "crud_collection_protocol_detail_query_with_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1433", "weight": 1.0}, {"source": "crud_collection_protocol_list_receipt_confirmed_details", "target": "crud_collection_protocol_apply_payment_detail_list_filters", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1434", "weight": 1.0}, {"source": "crud_collection_protocol_list_receipt_confirmed_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1461", "weight": 1.0}, {"source": "crud_collection_protocol_list_refund_confirm_details", "target": "crud_collection_protocol_detail_query_with_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1518", "weight": 1.0}, {"source": "crud_collection_protocol_list_refund_confirm_details", "target": "crud_collection_protocol_apply_payment_detail_list_filters", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1519", "weight": 1.0}, {"source": "crud_collection_protocol_list_refund_confirm_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1545", "weight": 1.0}, {"source": "crud_collection_protocol_list_refund_confirmed_details", "target": "crud_collection_protocol_detail_query_with_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1563", "weight": 1.0}, {"source": "crud_collection_protocol_list_refund_confirmed_details", "target": "crud_collection_protocol_apply_payment_detail_list_filters", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1564", "weight": 1.0}, {"source": "crud_collection_protocol_list_refund_confirmed_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1593", "weight": 1.0}, {"source": "crud_collection_protocol_submit_receipt_finance", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1678", "weight": 1.0}, {"source": "crud_collection_protocol_submit_receipt_finance", "target": "crud_collection_protocol_apply_submit_receipt_finance", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1679", "weight": 1.0}, {"source": "crud_collection_protocol_batch_submit_receipt_finance", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1697", "weight": 1.0}, {"source": "crud_collection_protocol_batch_submit_receipt_finance", "target": "crud_collection_protocol_apply_submit_receipt_finance", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1698", "weight": 1.0}, {"source": "crud_collection_protocol_submit_refund_finance", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1734", "weight": 1.0}, {"source": "crud_collection_protocol_submit_refund_finance", "target": "crud_collection_protocol_apply_submit_refund_finance", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1735", "weight": 1.0}, {"source": "crud_collection_protocol_batch_submit_refund_finance", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1762", "weight": 1.0}, {"source": "crud_collection_protocol_batch_submit_refund_finance", "target": "crud_collection_protocol_apply_submit_refund_finance", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1763", "weight": 1.0}, {"source": "crud_collection_protocol_list_payment_details_page", "target": "crud_collection_protocol_yyyymmdd_from_date_param", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1833", "weight": 1.0}, {"source": "crud_collection_protocol_list_payment_details_page", "target": "crud_collection_protocol_party_customer_map_by_protocol_ids", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1858", "weight": 1.0}, {"source": "crud_collection_protocol_list_payment_details_page", "target": "crud_collection_protocol_detail_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1864", "weight": 1.0}, {"source": "crud_collection_protocol_list_installment_warning", "target": "crud_collection_protocol_today_yyyymmdd", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1902", "weight": 1.0}, {"source": "crud_collection_protocol_list_installment_warning", "target": "crud_collection_protocol_detail_query_with_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1903", "weight": 1.0}, {"source": "crud_collection_protocol_list_installment_warning", "target": "crud_collection_protocol_classify_installment_warning", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1915", "weight": 1.0}, {"source": "crud_collection_protocol_list_installment_warning", "target": "crud_collection_protocol_detail_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1917", "weight": 1.0}, {"source": "crud_collection_protocol_update_collection_protocol", "target": "crud_collection_protocol_get_collection_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2009", "weight": 1.0}, {"source": "crud_collection_protocol_soft_delete_collection_protocol", "target": "crud_collection_protocol_get_collection_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2059", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_party_customer", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2097", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_party_customer", "target": "crud_collection_protocol_get_party_customer", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2098", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_party_customer", "target": "crud_collection_protocol_optional_decimal", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2119", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_collection_info", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2189", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_collection_info", "target": "crud_collection_protocol_get_collection_info", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2190", "weight": 1.0}, {"source": "crud_collection_protocol_save_samples", "target": "crud_collection_protocol_list_samples", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2290", "weight": 1.0}, {"source": "crud_collection_protocol_save_samples", "target": "crud_collection_protocol_validate_sample_codes_not_used", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2303", "weight": 1.0}, {"source": "crud_collection_protocol_save_samples", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2318", "weight": 1.0}, {"source": "crud_collection_protocol_save_samples", "target": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2356", "weight": 1.0}, {"source": "crud_collection_protocol_save_samples", "target": "crud_collection_protocol_save_sample_transports", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2366", "weight": 1.0}, {"source": "crud_collection_protocol_soft_delete_transports_for_protocol", "target": "crud_collection_protocol_list_sample_transports", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2395", "weight": 1.0}, {"source": "crud_collection_protocol_save_sample_transports", "target": "crud_collection_protocol_soft_delete_transports_for_protocol", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2413", "weight": 1.0}, {"source": "crud_collection_protocol_save_sample_transports", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2417", "weight": 1.0}, {"source": "crud_collection_protocol_align_fq_payment_details_payload", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2519", "weight": 1.0}, {"source": "crud_collection_protocol_align_fq_payment_details_payload", "target": "crud_collection_protocol_calc_installment_due_amounts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2539", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_payment", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2604", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_payment", "target": "crud_collection_protocol_get_payment_by_protocol_id", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2605", "weight": 1.0}, {"source": "crud_collection_protocol_save_payment_details", "target": "crud_collection_protocol_list_payment_details", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2665", "weight": 1.0}, {"source": "crud_collection_protocol_save_payment_details", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2686", "weight": 1.0}, {"source": "crud_collection_protocol_save_payment_details", "target": "crud_collection_protocol_pop_attachment_urls", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2687", "weight": 1.0}, {"source": "crud_collection_protocol_save_payment_details", "target": "crud_collection_protocol_normalize_yyyymmdd_date", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2744", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_storage_cert", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2768", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_storage_cert", "target": "crud_collection_protocol_get_storage_cert", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2769", "weight": 1.0}, {"source": "crud_collection_protocol_fullmoon_todo_detail_dict", "target": "crud_collection_protocol_fullmoon_todo_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2835", "weight": 1.0}, {"source": "crud_collection_protocol_fullmoon_todo_detail_dict", "target": "crud_collection_protocol_fullmoon_todo_empty_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2835", "weight": 1.0}, {"source": "crud_collection_protocol_fullmoon_todo_to_dict", "target": "crud_collection_protocol_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2862", "weight": 1.0}, {"source": "crud_collection_protocol_fullmoon_todo_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2866", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_fullmoon_todo", "target": "crud_collection_protocol_normalize_fields", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2896", "weight": 1.0}, {"source": "crud_collection_protocol_upsert_fullmoon_todo", "target": "crud_collection_protocol_get_fullmoon_todo", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2897", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_58", "target": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L58", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_92", "target": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L92", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_128", "target": "crud_collection_protocol_validate_sample_codes_not_used", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L128", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_182", "target": "crud_collection_protocol_normalize_yyyymmdd_date", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L182", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_201", "target": "crud_collection_protocol_normalize_fields", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L201", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_212", "target": "crud_collection_protocol_pop_attachment_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L212", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_223", "target": "crud_collection_protocol_attachments_to_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L223", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_287", "target": "crud_collection_protocol_urls_to_attachment_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L287", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_562", "target": "crud_collection_protocol_format_sample_collect_summary", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L562", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_609", "target": "crud_collection_protocol_load_protocol_storage_in_date_map", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L609", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_1356", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1356", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_1880", "target": "crud_collection_protocol_classify_installment_warning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1880", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_2256", "target": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2256", "weight": 1.0}, {"source": "crud_collection_protocol_rationale_2834", "target": "crud_collection_protocol_fullmoon_todo_detail_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2834", "weight": 1.0}], "raw_calls": [{"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L59"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L59"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L59"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L61"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L62"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L64"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L64"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L64"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L68"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L72"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L74"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L74"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L74"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L78"}, {"caller_nid": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L82"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L93"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L93"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L93"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L95"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L96"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L98"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L98"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L98"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L102"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L106"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L108"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L108"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L108"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L112"}, {"caller_nid": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L116"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L132"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L132"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L134"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "get_partner_sample_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L140"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L147"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "sorted", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L149"}, {"caller_nid": "crud_collection_protocol_validate_sample_codes_not_used", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L150"}, {"caller_nid": "crud_collection_protocol_total_pages", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L156"}, {"caller_nid": "crud_collection_protocol_total_pages", "callee": "ceil", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L156"}, {"caller_nid": "crud_collection_protocol_total_pages", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L156"}, {"caller_nid": "crud_collection_protocol_fmt_dt", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L160"}, {"caller_nid": "crud_collection_protocol_dec", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L166"}, {"caller_nid": "crud_collection_protocol_dec", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L167"}, {"caller_nid": "crud_collection_protocol_dec", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L168"}, {"caller_nid": "crud_collection_protocol_optional_decimal", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L174"}, {"caller_nid": "crud_collection_protocol_optional_decimal", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L174"}, {"caller_nid": "crud_collection_protocol_today_yyyymmdd", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L178"}, {"caller_nid": "crud_collection_protocol_today_yyyymmdd", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L178"}, {"caller_nid": "crud_collection_protocol_normalize_yyyymmdd_date", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L185"}, {"caller_nid": "crud_collection_protocol_normalize_yyyymmdd_date", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L185"}, {"caller_nid": "crud_collection_protocol_normalize_yyyymmdd_date", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L188"}, {"caller_nid": "crud_collection_protocol_normalize_yyyymmdd_date", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L188"}, {"caller_nid": "crud_collection_protocol_normalize_yyyymmdd_date", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L189"}, {"caller_nid": "crud_collection_protocol_normalize_yyyymmdd_date", "callee": "isdigit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L189"}, {"caller_nid": "crud_collection_protocol_normalize_fields", "callee": "items", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L205"}, {"caller_nid": "crud_collection_protocol_normalize_fields", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L206"}, {"caller_nid": "crud_collection_protocol_normalize_fields", "callee": "camel_to_snake", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L206"}, {"caller_nid": "crud_collection_protocol_pop_attachment_urls", "callee": "pop", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L216"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L226"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L227"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L228"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L231"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L232"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L232"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L232"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L234"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L235"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L235"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L236"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L236"}, {"caller_nid": "crud_collection_protocol_attachments_to_urls", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L237"}, {"caller_nid": "crud_collection_protocol_normalize_attachment_url_key", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L242"}, {"caller_nid": "crud_collection_protocol_normalize_attachment_url_key", "callee": "split", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L246"}, {"caller_nid": "crud_collection_protocol_normalize_attachment_url_key", "callee": "lstrip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L247"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L266"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L266"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L268"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L269"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L269"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "rsplit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L272"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L275"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L275"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L275"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L275"}, {"caller_nid": "crud_collection_protocol_lookup_attachment_by_url", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L276"}, {"caller_nid": "crud_collection_protocol_urls_to_attachment_list", "callee": "split", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L291"}, {"caller_nid": "crud_collection_protocol_urls_to_attachment_list", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L292"}, {"caller_nid": "crud_collection_protocol_urls_to_attachment_list", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L298"}, {"caller_nid": "crud_collection_protocol_urls_to_attachment_list", "callee": "rsplit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L302"}, {"caller_nid": "crud_collection_protocol_urls_to_attachment_list", "callee": "rsplit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L309"}, {"caller_nid": "crud_collection_protocol_urls_to_attachment_list", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L310"}, {"caller_nid": "crud_collection_protocol_user_nick_name_map", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L315"}, {"caller_nid": "crud_collection_protocol_user_nick_name_map", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L318"}, {"caller_nid": "crud_collection_protocol_user_nick_name_map", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L318"}, {"caller_nid": "crud_collection_protocol_user_nick_name_map", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L318"}, {"caller_nid": "crud_collection_protocol_user_nick_name_map", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L318"}, {"caller_nid": "crud_collection_protocol_protocol_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L329"}, {"caller_nid": "crud_collection_protocol_payment_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L355"}, {"caller_nid": "crud_collection_protocol_payment_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L356"}, {"caller_nid": "crud_collection_protocol_detail_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L399"}, {"caller_nid": "crud_collection_protocol_party_customer_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L441"}, {"caller_nid": "crud_collection_protocol_party_customer_to_dict", "callee": "format_date", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L450"}, {"caller_nid": "crud_collection_protocol_sample_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L496"}, {"caller_nid": "crud_collection_protocol_sample_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L496"}, {"caller_nid": "crud_collection_protocol_sample_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L497"}, {"caller_nid": "crud_collection_protocol_sample_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L498"}, {"caller_nid": "crud_collection_protocol_sample_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L499"}, {"caller_nid": "crud_collection_protocol_sample_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L500"}, {"caller_nid": "crud_collection_protocol_storage_cert_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L535"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L548"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L550"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L551"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L551"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L553"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L555"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L557"}, {"caller_nid": "crud_collection_protocol_format_newborn_info", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L558"}, {"caller_nid": "crud_collection_protocol_format_sample_collect_summary", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L566"}, {"caller_nid": "crud_collection_protocol_format_sample_collect_summary", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L573"}, {"caller_nid": "crud_collection_protocol_format_sample_collect_summary", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L575"}, {"caller_nid": "crud_collection_protocol_format_sample_collect_summary", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L576"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L584"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L584"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L585"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L585"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L586"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L586"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L591"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L592"}, {"caller_nid": "crud_collection_protocol_format_storage_cert_sample_info", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L593"}, {"caller_nid": "crud_collection_protocol_pick_storage_in_date", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L598"}, {"caller_nid": "crud_collection_protocol_pick_storage_in_date", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L598"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L613"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L613"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L613"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L615"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "isnot", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L619"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L625"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L628"}, {"caller_nid": "crud_collection_protocol_load_protocol_storage_in_date_map", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L629"}, {"caller_nid": "crud_collection_protocol_load_sample_type_name_map", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L636"}, {"caller_nid": "crud_collection_protocol_load_sample_type_name_map", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L641"}, {"caller_nid": "crud_collection_protocol_load_sample_type_name_map", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L641"}, {"caller_nid": "crud_collection_protocol_load_sample_type_name_map", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L641"}, {"caller_nid": "crud_collection_protocol_load_sample_type_name_map", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L642"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L661"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L661"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L666"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L670"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L670"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L674"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L677"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "or_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L678"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L679"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L680"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L685"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L687"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L687"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L687"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L696"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L696"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L696"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L698"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L706"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L706"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L706"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L708"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L716"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L716"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L716"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L718"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L725"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "setdefault", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L725"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L730"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L734"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L738"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L739"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L740"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L750"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L768"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L769"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L770"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L771"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L775"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L776"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L777"}, {"caller_nid": "crud_collection_protocol_list_storage_certs", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L777"}, {"caller_nid": "crud_collection_protocol_normalize_date_bound", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L783"}, {"caller_nid": "crud_collection_protocol_normalize_date_bound", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L784"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L790"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L791"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L792"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L793"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "isdigit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L793"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L794"}, {"caller_nid": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L798"}, {"caller_nid": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L798"}, {"caller_nid": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "callee": "isdigit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L798"}, {"caller_nid": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L799"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L884"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L884"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L884"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "_filtered", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L884"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L884"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L885"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L886"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L886"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L888"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L888"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L888"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L888"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "_filtered", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L888"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L889"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L901"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L901"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L901"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L903"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L912"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L912"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L912"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L914"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L923"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L923"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L923"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L924"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L924"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L924"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L928"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L928"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L928"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L928"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L931"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L931"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L931"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L931"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L935"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L935"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L935"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L936"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L936"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L937"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L937"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L940"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L940"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L940"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L940"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L948"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L948"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L948"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L948"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L950"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L953"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L953"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L958"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "setdefault", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L958"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "values", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L961"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L963"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L965"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get_lab_storage_code_map_by_sample_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L970"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L978"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L979"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L980"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L980"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L982"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L983"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L984"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L985"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L986"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L987"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L988"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L989"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L990"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L991"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L992"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L993"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L994"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1010"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1010"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1011"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1011"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1012"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1012"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1013"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1019"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1023"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1025"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1026"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1028"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1029"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1030"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1031"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1031"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1033"}, {"caller_nid": "crud_collection_protocol_list_collection_protocols", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1034"}, {"caller_nid": "crud_collection_protocol_get_collection_protocol", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1050"}, {"caller_nid": "crud_collection_protocol_get_collection_protocol", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1053"}, {"caller_nid": "crud_collection_protocol_get_collection_protocol", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1053"}, {"caller_nid": "crud_collection_protocol_get_collection_protocol", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1053"}, {"caller_nid": "crud_collection_protocol_get_collection_protocol", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1053"}, {"caller_nid": "crud_collection_protocol_get_payment_by_protocol_id", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1058"}, {"caller_nid": "crud_collection_protocol_get_payment_by_protocol_id", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1058"}, {"caller_nid": "crud_collection_protocol_get_payment_by_protocol_id", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1058"}, {"caller_nid": "crud_collection_protocol_get_payment_by_protocol_id", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1060"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1090"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1091"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1091"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1092"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1093"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1093"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1095"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1096"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1096"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1099"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1099"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1099"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1100"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1100"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1103"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1103"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1103"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1108"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1108"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1111"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1111"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1111"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get_receptions_map_for_samples", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1125"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get_qc_info_map_for_samples", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1134"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get_production_info_map_for_samples", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1140"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get_storage_release_map_for_samples", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1146"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1155"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1156"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1157"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1158"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1159"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1160"}, {"caller_nid": "crud_collection_protocol_get_protocol_detail_bundle", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1186"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1204"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1204"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1204"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1207"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1215"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1217"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1217"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1218"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1221"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "or_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1222"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1222"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1222"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1226"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1228"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1228"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1228"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1228"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1229"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1230"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1230"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1232"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1232"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1232"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1232"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1232"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1237"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1240"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1240"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1240"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1240"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1246"}, {"caller_nid": "crud_collection_protocol_list_audits", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1250"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1264"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1265"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1267"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "BizProtocolAudit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1268"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1269"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1272"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1279"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1281"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1284"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1285"}, {"caller_nid": "crud_collection_protocol_create_audit", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1286"}, {"caller_nid": "crud_collection_protocol_detail_query_with_protocol", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1296"}, {"caller_nid": "crud_collection_protocol_detail_query_with_protocol", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1296"}, {"caller_nid": "crud_collection_protocol_detail_query_with_protocol", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1296"}, {"caller_nid": "crud_collection_protocol_detail_query_with_protocol", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1296"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1318"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1321"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1321"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "or_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1323"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1324"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1325"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1326"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1327"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1331"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1332"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "or_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1333"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1334"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1335"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1341"}, {"caller_nid": "crud_collection_protocol_apply_payment_detail_list_filters", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1345"}, {"caller_nid": "crud_collection_protocol_rows_to_payment_detail_dicts", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1364"}, {"caller_nid": "crud_collection_protocol_rows_to_payment_detail_dicts", "callee": "post_process", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1378"}, {"caller_nid": "crud_collection_protocol_rows_to_payment_detail_dicts", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1379"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1407"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1408"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1408"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1408"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1408"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1409"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1410"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1410"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1412"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1412"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1412"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1412"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1412"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirm_details", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1417"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1444"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1445"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1445"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1445"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1445"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1446"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1447"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1447"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1449"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1449"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1449"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1449"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1449"}, {"caller_nid": "crud_collection_protocol_list_receipt_confirmed_details", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1462"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1476"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1476"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1476"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1478"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1487"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1490"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1491"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1494"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1496"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1498"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1499"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1500"}, {"caller_nid": "crud_collection_protocol_confirm_receipt", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1501"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1529"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1530"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1530"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1530"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1530"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1531"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1532"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1532"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1534"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1534"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1534"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1534"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1534"}, {"caller_nid": "crud_collection_protocol_list_refund_confirm_details", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1546"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1574"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1575"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1575"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1575"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1575"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1576"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1577"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1577"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1579"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1579"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1579"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1579"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1579"}, {"caller_nid": "crud_collection_protocol_list_refund_confirmed_details", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1594"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1608"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1608"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1608"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1610"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1619"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1622"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1623"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1626"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1628"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1630"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1631"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1632"}, {"caller_nid": "crud_collection_protocol_confirm_refund", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1633"}, {"caller_nid": "crud_collection_protocol_get_payment_detail_or_raise", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1644"}, {"caller_nid": "crud_collection_protocol_get_payment_detail_or_raise", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1644"}, {"caller_nid": "crud_collection_protocol_get_payment_detail_or_raise", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1644"}, {"caller_nid": "crud_collection_protocol_get_payment_detail_or_raise", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1646"}, {"caller_nid": "crud_collection_protocol_get_payment_detail_or_raise", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1655"}, {"caller_nid": "crud_collection_protocol_apply_submit_receipt_finance", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1665"}, {"caller_nid": "crud_collection_protocol_apply_submit_receipt_finance", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1668"}, {"caller_nid": "crud_collection_protocol_submit_receipt_finance", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1680"}, {"caller_nid": "crud_collection_protocol_submit_receipt_finance", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1681"}, {"caller_nid": "crud_collection_protocol_submit_receipt_finance", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1682"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1693"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1693"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1693"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1693"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1695"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1699"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1700"}, {"caller_nid": "crud_collection_protocol_batch_submit_receipt_finance", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1701"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1713"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1714"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1714"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1715"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1717"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1717"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1718"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1719"}, {"caller_nid": "crud_collection_protocol_apply_submit_refund_finance", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1721"}, {"caller_nid": "crud_collection_protocol_submit_refund_finance", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1742"}, {"caller_nid": "crud_collection_protocol_submit_refund_finance", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1743"}, {"caller_nid": "crud_collection_protocol_submit_refund_finance", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1744"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1758"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1758"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1758"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1758"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1760"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1770"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1771"}, {"caller_nid": "crud_collection_protocol_batch_submit_refund_finance", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1772"}, {"caller_nid": "crud_collection_protocol_party_customer_map_by_protocol_ids", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1782"}, {"caller_nid": "crud_collection_protocol_party_customer_map_by_protocol_ids", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1782"}, {"caller_nid": "crud_collection_protocol_party_customer_map_by_protocol_ids", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1782"}, {"caller_nid": "crud_collection_protocol_party_customer_map_by_protocol_ids", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1784"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1793"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1794"}, {"caller_nid": "crud_collection_protocol_yyyymmdd_from_date_param", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1795"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1815"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1815"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1815"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1815"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1826"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1827"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1828"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1829"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "like", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1829"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1830"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1831"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1831"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1835"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1839"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1842"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "scalar", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1843"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "with_entities", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1843"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1843"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "count", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1843"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1844"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1845"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1845"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "desc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1848"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1848"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1850"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "limit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1850"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "offset", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1850"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1850"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1862"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1863"}, {"caller_nid": "crud_collection_protocol_list_payment_details_page", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1876"}, {"caller_nid": "crud_collection_protocol_classify_installment_warning", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1881"}, {"caller_nid": "crud_collection_protocol_classify_installment_warning", "callee": "isdigit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1881"}, {"caller_nid": "crud_collection_protocol_classify_installment_warning", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1885"}, {"caller_nid": "crud_collection_protocol_classify_installment_warning", "callee": "strptime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1885"}, {"caller_nid": "crud_collection_protocol_classify_installment_warning", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1885"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1903"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "isnot", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1904"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1908"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1911"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1911"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1911"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1914"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1925"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1925"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1934"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1936"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1937"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1938"}, {"caller_nid": "crud_collection_protocol_list_installment_warning", "callee": "max", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1938"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1957"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "allocate_next_biz_no", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1959"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "assert_biz_no_available", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1962"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "BizCollectionProtocol", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1963"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1964"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1965"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1967"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1968"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1969"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1970"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1973"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1976"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1978"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1981"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1982"}, {"caller_nid": "crud_collection_protocol_create_collection_protocol", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1983"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2013"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2015"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2017"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2019"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2021"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2023"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2027"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2031"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2035"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2039"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2041"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2043"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2045"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2046"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2047"}, {"caller_nid": "crud_collection_protocol_update_collection_protocol", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2048"}, {"caller_nid": "crud_collection_protocol_soft_delete_collection_protocol", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2063"}, {"caller_nid": "crud_collection_protocol_soft_delete_collection_protocol", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2066"}, {"caller_nid": "crud_collection_protocol_soft_delete_collection_protocol", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2067"}, {"caller_nid": "crud_collection_protocol_soft_delete_collection_protocol", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2068"}, {"caller_nid": "crud_collection_protocol_get_party_customer", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2078"}, {"caller_nid": "crud_collection_protocol_get_party_customer", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2078"}, {"caller_nid": "crud_collection_protocol_get_party_customer", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2078"}, {"caller_nid": "crud_collection_protocol_get_party_customer", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2080"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2113"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2113"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2116"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2119"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2122"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "optional_date", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2122"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2125"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2127"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2129"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2130"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2131"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2132"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "BizProtocolPartyCustomer", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2134"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2135"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2139"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2139"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2142"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2144"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2149"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2149"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2152"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2155"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2158"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "optional_date", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2158"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2161"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2162"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2163"}, {"caller_nid": "crud_collection_protocol_upsert_party_customer", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2164"}, {"caller_nid": "crud_collection_protocol_get_collection_info", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2170"}, {"caller_nid": "crud_collection_protocol_get_collection_info", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2170"}, {"caller_nid": "crud_collection_protocol_get_collection_info", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2170"}, {"caller_nid": "crud_collection_protocol_get_collection_info", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2172"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2196"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2196"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2199"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2201"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2203"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2204"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2205"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2206"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "BizProtocolCollectionInfo", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2208"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2209"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2213"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2213"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2216"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2218"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2223"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2223"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2226"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2227"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2228"}, {"caller_nid": "crud_collection_protocol_upsert_collection_info", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2229"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2235"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2235"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2235"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2235"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2237"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2243"}, {"caller_nid": "crud_collection_protocol_list_samples", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2243"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2259"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "keys", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2259"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2260"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2263"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2263"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2263"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "in_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2265"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2272"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2273"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2273"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2274"}, {"caller_nid": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2280"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2292"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2294"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2299"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2300"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "flush", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2302"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "enumerate", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2317"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "BizProtocolSample", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2319"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2320"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2324"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2324"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2327"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2329"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2336"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2336"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2339"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2341"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2341"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2341"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2341"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2345"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2345"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2345"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2348"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2349"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2350"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2352"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2354"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2363"}, {"caller_nid": "crud_collection_protocol_save_samples", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2365"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2376"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2376"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2376"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2376"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2378"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2384"}, {"caller_nid": "crud_collection_protocol_list_sample_transports", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2384"}, {"caller_nid": "crud_collection_protocol_soft_delete_transports_for_protocol", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2399"}, {"caller_nid": "crud_collection_protocol_soft_delete_transports_for_protocol", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2400"}, {"caller_nid": "crud_collection_protocol_soft_delete_transports_for_protocol", "callee": "flush", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2402"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "enumerate", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2414"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2415"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2417"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2418"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2419"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2422"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2422"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2426"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2427"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "parse_datetime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2428"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2430"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2432"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2432"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "BizProtocolSampleTransport", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2436"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2437"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2442"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2442"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2443"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2443"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2444"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2444"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2447"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2447"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2448"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2448"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2451"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2451"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2454"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2456"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2459"}, {"caller_nid": "crud_collection_protocol_save_sample_transports", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2460"}, {"caller_nid": "crud_collection_protocol_get_storage_cert", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2465"}, {"caller_nid": "crud_collection_protocol_get_storage_cert", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2465"}, {"caller_nid": "crud_collection_protocol_get_storage_cert", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2465"}, {"caller_nid": "crud_collection_protocol_get_storage_cert", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2467"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2478"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2478"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2479"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2481"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2482"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2483"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "monthrange", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2487"}, {"caller_nid": "crud_collection_protocol_add_months_yyyymmdd", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2488"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2498"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "round", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2498"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2498"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "range", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2502"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2508"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2508"}, {"caller_nid": "crud_collection_protocol_calc_installment_due_amounts", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2508"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2516"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "list", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2517"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2518"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2519"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2520"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2521"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "range", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2521"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2523"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2525"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2527"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2533"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2535"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2537"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2540"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2542"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "range", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2544"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2547"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2549"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2550"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2552"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "calc_fq_installment_due_date", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2553"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2554"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "calc_fq_installment_due_date", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2557"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2559"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2560"}, {"caller_nid": "crud_collection_protocol_align_fq_payment_details_payload", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2564"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2580"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2580"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2580"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2580"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2582"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2589"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2590"}, {"caller_nid": "crud_collection_protocol_list_payment_details", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2591"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "_apply", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2628"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2630"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2631"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2632"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2633"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2636"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2636"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "BizProtocolPayment", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2637"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2638"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2643"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2643"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2646"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2648"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "_apply", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2651"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2652"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2653"}, {"caller_nid": "crud_collection_protocol_upsert_payment", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2654"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2669"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2670"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "flush", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2672"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "enumerate", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2685"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2686"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2712"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2713"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "parse_datetime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2714"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2716"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2717"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "BizProtocolPaymentDetail", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2720"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2721"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2725"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2725"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2728"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2730"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2741"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2741"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2744"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2747"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2747"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2747"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2750"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2751"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2751"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2753"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "append", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2754"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2755"}, {"caller_nid": "crud_collection_protocol_save_payment_details", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2757"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2774"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2774"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2776"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2778"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2779"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2780"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2781"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "BizProtocolStorageCert", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2783"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2784"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2788"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2788"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2791"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2793"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2798"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2798"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2799"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2800"}, {"caller_nid": "crud_collection_protocol_upsert_storage_cert", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2801"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_detail_dict", "callee": "dict", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2835"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_detail_dict", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2839"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_detail_dict", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2840"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_detail_dict", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2841"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2852"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2859"}, {"caller_nid": "crud_collection_protocol_fullmoon_todo_to_dict", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2860"}, {"caller_nid": "crud_collection_protocol_get_fullmoon_todo", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2877"}, {"caller_nid": "crud_collection_protocol_get_fullmoon_todo", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2877"}, {"caller_nid": "crud_collection_protocol_get_fullmoon_todo", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2877"}, {"caller_nid": "crud_collection_protocol_get_fullmoon_todo", "callee": "and_", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2879"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2909"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2909"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2912"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2912"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2912"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2914"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2916"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2917"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2918"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2919"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "BizProtocolFullmoonTodo", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2921"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2922"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2926"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2926"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2929"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2931"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2936"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2936"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "setattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2939"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2939"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2939"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "add", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2940"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "commit", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2941"}, {"caller_nid": "crud_collection_protocol_upsert_fullmoon_todo", "callee": "refresh", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L2942"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/71619dde49e29da9fd3725647430be2456699ab50dc3ab99c28e69aa6fb14364.json b/backend/app/graphify-out/cache/ast/71619dde49e29da9fd3725647430be2456699ab50dc3ab99c28e69aa6fb14364.json new file mode 100644 index 00000000..86e2a6d9 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/71619dde49e29da9fd3725647430be2456699ab50dc3ab99c28e69aa6fb14364.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "label": "auth.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L1"}, {"id": "core_auth_redis_session_enabled", "label": "_redis_session_enabled()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L29"}, {"id": "core_auth_get_redis_client", "label": "_get_redis_client()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L34"}, {"id": "core_auth_session_key", "label": "_session_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L51"}, {"id": "core_auth_refresh_key", "label": "_refresh_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L55"}, {"id": "core_auth_store_session", "label": "store_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L59"}, {"id": "core_auth_revoke_session", "label": "revoke_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L67"}, {"id": "core_auth_extend_session", "label": "extend_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L75"}, {"id": "core_auth_is_session_valid", "label": "is_session_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L91"}, {"id": "core_auth_store_refresh_token", "label": "store_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L106"}, {"id": "core_auth_is_refresh_token_valid", "label": "is_refresh_token_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L114"}, {"id": "core_auth_revoke_refresh_token", "label": "revoke_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L126"}, {"id": "core_auth_create_access_token", "label": "create_access_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L133"}, {"id": "core_auth_create_refresh_token", "label": "create_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L157"}, {"id": "core_auth_decode_token", "label": "decode_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L173"}, {"id": "core_auth_get_current_user_by_token", "label": "get_current_user_by_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L186"}, {"id": "core_auth_get_current_user", "label": "get_current_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L251"}, {"id": "core_auth_get_current_user_simple", "label": "get_current_user_simple()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L259"}, {"id": "core_auth_get_client_ip", "label": "get_client_ip()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L278"}, {"id": "core_auth_rationale_76", "label": "\u5237\u65b0\u4f1a\u8bdd TTL\uff08refreshToken \u7eed\u671f\uff1b\u5df2\u767b\u5f55\u7528\u6237\u6bcf\u6b21 API \u6821\u9a8c\u901a\u8fc7\u540e\u6ed1\u52a8\u7eed\u671f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L76"}, {"id": "core_auth_rationale_107", "label": "\u5199\u5165 refreshToken\uff08\u7528\u4e8e one-time \u4f7f\u7528/\u540a\u9500\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L107"}, {"id": "core_auth_rationale_190", "label": "\u6839\u636e token \u83b7\u53d6\u5f53\u524d\u7528\u6237\uff08\u5305\u542b Redis \u4f1a\u8bdd\u6821\u9a8c\uff1b\u4f1a\u8bdd\u6ed1\u52a8\u7eed\u671f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L190"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "redis_asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "redis", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "fastapi_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "jose", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_context", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_redis_session_enabled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_redis_client", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_session_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_refresh_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_store_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_revoke_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_extend_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_is_session_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L91", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_store_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_is_refresh_token_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_revoke_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_create_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_create_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_decode_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user_by_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L251", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user_simple", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_client_ip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L278", "weight": 1.0}, {"source": "core_auth_get_redis_client", "target": "core_auth_redis_session_enabled", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L36", "weight": 1.0}, {"source": "core_auth_store_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L61", "weight": 1.0}, {"source": "core_auth_store_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L64", "weight": 1.0}, {"source": "core_auth_revoke_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L69", "weight": 1.0}, {"source": "core_auth_revoke_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L72", "weight": 1.0}, {"source": "core_auth_extend_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L79", "weight": 1.0}, {"source": "core_auth_extend_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L84", "weight": 1.0}, {"source": "core_auth_is_session_valid", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L93", "weight": 1.0}, {"source": "core_auth_is_session_valid", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L100", "weight": 1.0}, {"source": "core_auth_store_refresh_token", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L108", "weight": 1.0}, {"source": "core_auth_store_refresh_token", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L111", "weight": 1.0}, {"source": "core_auth_is_refresh_token_valid", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L115", "weight": 1.0}, {"source": "core_auth_is_refresh_token_valid", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L121", "weight": 1.0}, {"source": "core_auth_revoke_refresh_token", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L127", "weight": 1.0}, {"source": "core_auth_revoke_refresh_token", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L130", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_decode_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L191", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_is_session_valid", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L196", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_extend_session", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L203", "weight": 1.0}, {"source": "core_auth_get_current_user", "target": "core_auth_get_current_user_by_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L256", "weight": 1.0}, {"source": "core_auth_get_current_user_simple", "target": "core_auth_decode_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L261", "weight": 1.0}, {"source": "core_auth_rationale_76", "target": "core_auth_extend_session", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L76", "weight": 1.0}, {"source": "core_auth_rationale_107", "target": "core_auth_store_refresh_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L107", "weight": 1.0}, {"source": "core_auth_rationale_190", "target": "core_auth_get_current_user_by_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L190", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_auth_redis_session_enabled", "callee": "bool", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L31"}, {"caller_nid": "core_auth_get_redis_client", "callee": "Redis", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L39"}, {"caller_nid": "core_auth_store_session", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L64"}, {"caller_nid": "core_auth_revoke_session", "callee": "delete", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L72"}, {"caller_nid": "core_auth_extend_session", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L83"}, {"caller_nid": "core_auth_extend_session", "callee": "expire", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L84"}, {"caller_nid": "core_auth_is_session_valid", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L100"}, {"caller_nid": "core_auth_is_session_valid", "callee": "exists", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L100"}, {"caller_nid": "core_auth_store_refresh_token", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L111"}, {"caller_nid": "core_auth_is_refresh_token_valid", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L121"}, {"caller_nid": "core_auth_is_refresh_token_valid", "callee": "exists", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L121"}, {"caller_nid": "core_auth_revoke_refresh_token", "callee": "delete", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L130"}, {"caller_nid": "core_auth_create_access_token", "callee": "copy", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L140"}, {"caller_nid": "core_auth_create_access_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L142"}, {"caller_nid": "core_auth_create_access_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L144"}, {"caller_nid": "core_auth_create_access_token", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L144"}, {"caller_nid": "core_auth_create_access_token", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L145"}, {"caller_nid": "core_auth_create_access_token", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L153"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "copy", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L159"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L160"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L160"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L161"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L169"}, {"caller_nid": "core_auth_decode_token", "callee": "decode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L176"}, {"caller_nid": "core_auth_decode_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L179"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L193"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L194"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L197"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L206"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L211"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L212"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L213"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L218"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L219"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "resolve_web_role_for_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L224"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L226"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L226"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L227"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L227"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L228"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L231"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L231"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L234"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L244"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L245"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L245"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L262"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L264"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L268"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L268"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L271"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L272"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L273"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L274"}, {"caller_nid": "core_auth_get_client_ip", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L280"}, {"caller_nid": "core_auth_get_client_ip", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L282"}, {"caller_nid": "core_auth_get_client_ip", "callee": "split", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L282"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/7cc46efdbd758dca719c74bee9166890264ce071661ac2bcc4764f7e30f8c56d.json b/backend/app/graphify-out/cache/ast/7cc46efdbd758dca719c74bee9166890264ce071661ac2bcc4764f7e30f8c56d.json new file mode 100644 index 00000000..a2a86c2b --- /dev/null +++ b/backend/app/graphify-out/cache/ast/7cc46efdbd758dca719c74bee9166890264ce071661ac2bcc4764f7e30f8c56d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "label": "auth.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L1"}, {"id": "core_auth_redis_session_enabled", "label": "_redis_session_enabled()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L29"}, {"id": "core_auth_get_redis_client", "label": "_get_redis_client()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L34"}, {"id": "core_auth_session_key", "label": "_session_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L51"}, {"id": "core_auth_refresh_key", "label": "_refresh_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L55"}, {"id": "core_auth_store_session", "label": "store_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L59"}, {"id": "core_auth_revoke_session", "label": "revoke_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L67"}, {"id": "core_auth_extend_session", "label": "extend_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L75"}, {"id": "core_auth_is_session_valid", "label": "is_session_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L91"}, {"id": "core_auth_store_refresh_token", "label": "store_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L106"}, {"id": "core_auth_is_refresh_token_valid", "label": "is_refresh_token_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L114"}, {"id": "core_auth_revoke_refresh_token", "label": "revoke_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L126"}, {"id": "core_auth_create_access_token", "label": "create_access_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L133"}, {"id": "core_auth_create_refresh_token", "label": "create_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L157"}, {"id": "core_auth_decode_token", "label": "decode_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L173"}, {"id": "core_auth_get_current_user_by_token", "label": "get_current_user_by_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L186"}, {"id": "core_auth_get_current_user", "label": "get_current_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L247"}, {"id": "core_auth_get_current_user_simple", "label": "get_current_user_simple()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L255"}, {"id": "core_auth_get_client_ip", "label": "get_client_ip()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L274"}, {"id": "core_auth_rationale_76", "label": "\u5237\u65b0\u4f1a\u8bdd TTL\uff08refreshToken \u7eed\u671f\uff1b\u5df2\u767b\u5f55\u7528\u6237\u6bcf\u6b21 API \u6821\u9a8c\u901a\u8fc7\u540e\u6ed1\u52a8\u7eed\u671f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L76"}, {"id": "core_auth_rationale_107", "label": "\u5199\u5165 refreshToken\uff08\u7528\u4e8e one-time \u4f7f\u7528/\u540a\u9500\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L107"}, {"id": "core_auth_rationale_190", "label": "\u6839\u636e token \u83b7\u53d6\u5f53\u524d\u7528\u6237\uff08\u5305\u542b Redis \u4f1a\u8bdd\u6821\u9a8c\uff1b\u4f1a\u8bdd\u6ed1\u52a8\u7eed\u671f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L190"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "redis_asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "redis", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "fastapi_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "jose", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_context", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_redis_session_enabled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_redis_client", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_session_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_refresh_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_store_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_revoke_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_extend_session", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_is_session_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L91", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_store_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_is_refresh_token_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_revoke_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_create_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_create_refresh_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_decode_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user_by_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_current_user_simple", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L255", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "core_auth_get_client_ip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L274", "weight": 1.0}, {"source": "core_auth_get_redis_client", "target": "core_auth_redis_session_enabled", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L36", "weight": 1.0}, {"source": "core_auth_store_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L61", "weight": 1.0}, {"source": "core_auth_store_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L64", "weight": 1.0}, {"source": "core_auth_revoke_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L69", "weight": 1.0}, {"source": "core_auth_revoke_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L72", "weight": 1.0}, {"source": "core_auth_extend_session", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L79", "weight": 1.0}, {"source": "core_auth_extend_session", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L84", "weight": 1.0}, {"source": "core_auth_is_session_valid", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L93", "weight": 1.0}, {"source": "core_auth_is_session_valid", "target": "core_auth_session_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L100", "weight": 1.0}, {"source": "core_auth_store_refresh_token", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L108", "weight": 1.0}, {"source": "core_auth_store_refresh_token", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L111", "weight": 1.0}, {"source": "core_auth_is_refresh_token_valid", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L115", "weight": 1.0}, {"source": "core_auth_is_refresh_token_valid", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L121", "weight": 1.0}, {"source": "core_auth_revoke_refresh_token", "target": "core_auth_get_redis_client", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L127", "weight": 1.0}, {"source": "core_auth_revoke_refresh_token", "target": "core_auth_refresh_key", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L130", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_decode_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L191", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_is_session_valid", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L196", "weight": 1.0}, {"source": "core_auth_get_current_user_by_token", "target": "core_auth_extend_session", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L203", "weight": 1.0}, {"source": "core_auth_get_current_user", "target": "core_auth_get_current_user_by_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L252", "weight": 1.0}, {"source": "core_auth_get_current_user_simple", "target": "core_auth_decode_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L257", "weight": 1.0}, {"source": "core_auth_rationale_76", "target": "core_auth_extend_session", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L76", "weight": 1.0}, {"source": "core_auth_rationale_107", "target": "core_auth_store_refresh_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L107", "weight": 1.0}, {"source": "core_auth_rationale_190", "target": "core_auth_get_current_user_by_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L190", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_auth_redis_session_enabled", "callee": "bool", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L31"}, {"caller_nid": "core_auth_get_redis_client", "callee": "Redis", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L39"}, {"caller_nid": "core_auth_store_session", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L64"}, {"caller_nid": "core_auth_revoke_session", "callee": "delete", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L72"}, {"caller_nid": "core_auth_extend_session", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L83"}, {"caller_nid": "core_auth_extend_session", "callee": "expire", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L84"}, {"caller_nid": "core_auth_is_session_valid", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L100"}, {"caller_nid": "core_auth_is_session_valid", "callee": "exists", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L100"}, {"caller_nid": "core_auth_store_refresh_token", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L111"}, {"caller_nid": "core_auth_is_refresh_token_valid", "callee": "wait_for", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L121"}, {"caller_nid": "core_auth_is_refresh_token_valid", "callee": "exists", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L121"}, {"caller_nid": "core_auth_revoke_refresh_token", "callee": "delete", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L130"}, {"caller_nid": "core_auth_create_access_token", "callee": "copy", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L140"}, {"caller_nid": "core_auth_create_access_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L142"}, {"caller_nid": "core_auth_create_access_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L144"}, {"caller_nid": "core_auth_create_access_token", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L144"}, {"caller_nid": "core_auth_create_access_token", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L145"}, {"caller_nid": "core_auth_create_access_token", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L153"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "copy", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L159"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "utcnow", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L160"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L160"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "update", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L161"}, {"caller_nid": "core_auth_create_refresh_token", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L169"}, {"caller_nid": "core_auth_decode_token", "callee": "decode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L176"}, {"caller_nid": "core_auth_decode_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L179"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L193"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L194"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L197"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L206"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L211"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L212"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L213"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L218"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L219"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "resolve_web_role_for_user", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L224"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L226"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L226"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L227"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L227"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L228"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L230"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L240"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L241"}, {"caller_nid": "core_auth_get_current_user_by_token", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L241"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L258"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "HTTPException", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L260"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "set", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L264"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L264"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L267"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L268"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L269"}, {"caller_nid": "core_auth_get_current_user_simple", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L270"}, {"caller_nid": "core_auth_get_client_ip", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L276"}, {"caller_nid": "core_auth_get_client_ip", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L278"}, {"caller_nid": "core_auth_get_client_ip", "callee": "split", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L278"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/94f8c4b7c353bd2bf554b45bd6fd48457815a31c24d83bd469b214405e052ca9.json b/backend/app/graphify-out/cache/ast/94f8c4b7c353bd2bf554b45bd6fd48457815a31c24d83bd469b214405e052ca9.json new file mode 100644 index 00000000..96a65f58 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/94f8c4b7c353bd2bf554b45bd6fd48457815a31c24d83bd469b214405e052ca9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "label": "models.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1"}, {"id": "models_models_userrole", "label": "UserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L10"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysuser", "label": "SysUser", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L22"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysrole", "label": "SysRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L48"}, {"id": "models_models_sysuserrole", "label": "SysUserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L68"}, {"id": "models_models_sysrolemenu", "label": "SysRoleMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L87"}, {"id": "models_models_sysroledatascopedetail", "label": "SysRoleDataScopeDetail", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L106"}, {"id": "models_models_sysmenu", "label": "SysMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L126"}, {"id": "models_models_sysdept", "label": "SysDept", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L152"}, {"id": "models_models_systenant", "label": "SysTenant", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L175"}, {"id": "models_models_syssite", "label": "SysSite", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L195"}, {"id": "models_models_syspost", "label": "SysPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L220"}, {"id": "models_models_sysuserpost", "label": "SysUserPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L240"}, {"id": "models_models_bizitemunit", "label": "BizItemUnit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L259"}, {"id": "models_models_bizexpresscompany", "label": "BizExpressCompany", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L278"}, {"id": "models_models_bizcustomer", "label": "BizCustomer", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L297"}, {"id": "models_models_bizcellsampletype", "label": "BizCellSampleType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L320"}, {"id": "models_models_bizcollectionregion", "label": "BizCollectionRegion", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L341"}, {"id": "models_models_bizcollectionhospital", "label": "BizCollectionHospital", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L359"}, {"id": "models_models_bizcollectionprotocolno", "label": "BizCollectionProtocolNo", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L378"}, {"id": "models_models_bizbiznosequence", "label": "BizBizNoSequence", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L400"}, {"id": "models_models_bizsamplecode", "label": "BizSampleCode", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L420"}, {"id": "models_models_sysdicttype", "label": "SysDictType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L448"}, {"id": "models_models_sysethnic", "label": "SysEthnic", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L467"}, {"id": "models_models_sysdictdata", "label": "SysDictData", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L486"}, {"id": "models_models_sysapirequestlog", "label": "SysApiRequestLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L511"}, {"id": "models_models_sysapirequestloghis", "label": "SysApiRequestLogHis", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L537"}, {"id": "models_models_bizleaverequest", "label": "BizLeaveRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L568"}, {"id": "models_models_wfprocessdef", "label": "WfProcessDef", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L597"}, {"id": "models_models_wfprocessversion", "label": "WfProcessVersion", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L617"}, {"id": "models_models_wfnode", "label": "WfNode", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L638"}, {"id": "models_models_wftransition", "label": "WfTransition", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L660"}, {"id": "models_models_wfprocessinstance", "label": "WfProcessInstance", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L681"}, {"id": "models_models_wftask", "label": "WfTask", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L705"}, {"id": "models_models_bizcollectionprotocol", "label": "BizCollectionProtocol", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L732"}, {"id": "models_models_bizprotocolaudit", "label": "BizProtocolAudit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L763"}, {"id": "models_models_bizstoragereleasereview", "label": "BizStorageReleaseReview", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L784"}, {"id": "models_models_bizprotocolpayment", "label": "BizProtocolPayment", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L817"}, {"id": "models_models_bizprotocolpaymentdetail", "label": "BizProtocolPaymentDetail", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L841"}, {"id": "models_models_bizprotocolpartycustomer", "label": "BizProtocolPartyCustomer", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L874"}, {"id": "models_models_bizprotocolcollectioninfo", "label": "BizProtocolCollectionInfo", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L914"}, {"id": "models_models_bizprotocolsample", "label": "BizProtocolSample", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L938"}, {"id": "models_models_bizprotocolsampletransport", "label": "BizProtocolSampleTransport", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L968"}, {"id": "models_models_bizattachment", "label": "BizAttachment", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L996"}, {"id": "models_models_bizprotocolstoragecert", "label": "BizProtocolStorageCert", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1020"}, {"id": "models_models_bizsamplereceptioncheckitem", "label": "BizSampleReceptionCheckItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1041"}, {"id": "models_models_bizsamplereceptioncheckresult", "label": "BizSampleReceptionCheckResult", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1061"}, {"id": "models_models_bizsamplereception", "label": "BizSampleReception", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1083"}, {"id": "models_models_bizsamplesmsnotification", "label": "BizSampleSmsNotification", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1122"}, {"id": "models_models_bizqcsmsnotification", "label": "BizQcSmsNotification", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1143"}, {"id": "models_models_bizstorageentrysmsnotification", "label": "BizStorageEntrySmsNotification", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1168"}, {"id": "models_models_bizqcthirdpartycompany", "label": "BizQcThirdPartyCompany", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1197"}, {"id": "models_models_bizqcthirdpartyitem", "label": "BizQcThirdPartyItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1224"}, {"id": "models_models_bizqclabtestitem", "label": "BizQcLabTestItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1246"}, {"id": "models_models_bizqcworkorder", "label": "BizQcWorkOrder", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1267"}, {"id": "models_models_bizqcworkorderlabitem", "label": "BizQcWorkOrderLabItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1307"}, {"id": "models_models_bizqcworkorderthirditem", "label": "BizQcWorkOrderThirdItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1329"}, {"id": "models_models_bizqctask", "label": "BizQcTask", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1354"}, {"id": "models_models_bizcleanroom", "label": "BizCleanRoom", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1392"}, {"id": "models_models_bizcleanroomaccesslog", "label": "BizCleanRoomAccessLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1414"}, {"id": "models_models_bizstoragefacility", "label": "BizStorageFacility", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1439"}, {"id": "models_models_bizstoragefacilityslot", "label": "BizStorageFacilitySlot", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1460"}, {"id": "models_models_bizstorageslotoccupancy", "label": "BizStorageSlotOccupancy", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1483"}, {"id": "models_models_bizexhibitionappointment", "label": "BizExhibitionAppointment", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1509"}, {"id": "models_models_bizcellproducttype", "label": "BizCellProductType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1537"}, {"id": "models_models_bizcellproductspec", "label": "BizCellProductSpec", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1556"}, {"id": "models_models_bizcellproductprice", "label": "BizCellProductPrice", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1575"}, {"id": "models_models_bizcellproductprojectsystem", "label": "BizCellProductProjectSystem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1600"}, {"id": "models_models_bizcellproductprojectsystemitem", "label": "BizCellProductProjectSystemItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1620"}, {"id": "models_models_bizchannel", "label": "BizChannel", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1647"}, {"id": "models_models_bizchannelagreement", "label": "BizChannelAgreement", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1671"}, {"id": "models_models_bizchannelagreementproductprice", "label": "BizChannelAgreementProductPrice", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1696"}, {"id": "models_models_bizchannelinvoice", "label": "BizChannelInvoice", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1721"}, {"id": "models_models_bizchannelmailaddress", "label": "BizChannelMailAddress", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1745"}, {"id": "models_models_bizchannelaccount", "label": "BizChannelAccount", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1766"}, {"id": "models_models_bizchannelproductquota", "label": "BizChannelProductQuota", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1785"}, {"id": "models_models_bizchannelserviceorder", "label": "BizChannelServiceOrder", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1811"}, {"id": "models_models_bizchannelserviceorderproduct", "label": "BizChannelServiceOrderProduct", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1857"}, {"id": "models_models_bizchannelserviceordertxn", "label": "BizChannelServiceOrderTxn", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1886"}, {"id": "models_models_bizcheckupinstitution", "label": "BizCheckupInstitution", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1921"}, {"id": "models_models_bizcheckupinstitutioninvoice", "label": "BizCheckupInstitutionInvoice", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1943"}, {"id": "models_models_bizcheckupinstitutionproject", "label": "BizCheckupInstitutionProject", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1967"}, {"id": "models_models_bizcheckupinstitutionpackage", "label": "BizCheckupInstitutionPackage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1988"}, {"id": "models_models_bizcheckupinstitutionpackageitem", "label": "BizCheckupInstitutionPackageItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2009"}, {"id": "models_models_bizconsumable", "label": "BizConsumable", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2035"}, {"id": "models_models_bizreagent", "label": "BizReagent", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2061"}, {"id": "models_models_bizsopdocument", "label": "BizSopDocument", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2087"}, {"id": "models_models_bizprocesscategory", "label": "BizProcessCategory", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2108"}, {"id": "models_models_bizoutputtype", "label": "BizOutputType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2127"}, {"id": "models_models_bizconsumablepack", "label": "BizConsumablePack", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2146"}, {"id": "models_models_bizconsumablepackitem", "label": "BizConsumablePackItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2168"}, {"id": "models_models_bizprocess", "label": "BizProcess", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2191"}, {"id": "models_models_bizprocessreagent", "label": "BizProcessReagent", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2215"}, {"id": "models_models_bizprocessconsumable", "label": "BizProcessConsumable", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2239"}, {"id": "models_models_bizprocessoutput", "label": "BizProcessOutput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2263"}, {"id": "models_models_bizprocessdatacollection", "label": "BizProcessDataCollection", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2284"}, {"id": "models_models_bizprocessroute", "label": "BizProcessRoute", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2302"}, {"id": "models_models_bizprocessroutestep", "label": "BizProcessRouteStep", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2324"}, {"id": "models_models_bizprocessroutestepreagent", "label": "BizProcessRouteStepReagent", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2351"}, {"id": "models_models_bizprocessroutestepconsumable", "label": "BizProcessRouteStepConsumable", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2375"}, {"id": "models_models_bizprocessroutestepoutput", "label": "BizProcessRouteStepOutput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2399"}, {"id": "models_models_bizprocessroutestepdatacollection", "label": "BizProcessRouteStepDataCollection", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2420"}, {"id": "models_models_bizcellproduct", "label": "BizCellProduct", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2445"}, {"id": "models_models_bizproductionworkorder", "label": "BizProductionWorkOrder", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2479"}, {"id": "models_models_bizproductiontask", "label": "BizProductionTask", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2509"}, {"id": "models_models_bizproductiontaskinput", "label": "BizProductionTaskInput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2539"}, {"id": "models_models_bizproductiontaskstep", "label": "BizProductionTaskStep", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2561"}, {"id": "models_models_bizproductiontaskstepreagent", "label": "BizProductionTaskStepReagent", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2591"}, {"id": "models_models_bizproductiontaskstepconsumable", "label": "BizProductionTaskStepConsumable", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2616"}, {"id": "models_models_bizproductiontaskstepoutput", "label": "BizProductionTaskStepOutput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2641"}, {"id": "models_models_bizproductiontaskstepdatacollection", "label": "BizProductionTaskStepDataCollection", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2662"}, {"id": "models_models_bizproductiontaskoutput", "label": "BizProductionTaskOutput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2683"}, {"id": "models_models_bizprotocolfullmoontodo", "label": "BizProtocolFullmoonTodo", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2708"}, {"id": "models_models_bizinsurancecompany", "label": "BizInsuranceCompany", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2738"}, {"id": "models_models_bizinsurancecompanyinvoice", "label": "BizInsuranceCompanyInvoice", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2760"}, {"id": "models_models_bizinsuranceprojectprice", "label": "BizInsuranceProjectPrice", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2784"}, {"id": "models_models_bizconsumablestocklog", "label": "BizConsumableStockLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2805"}, {"id": "models_models_bizreagentstocklog", "label": "BizReagentStockLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2835"}, {"id": "models_models_bizpilotapplication", "label": "BizPilotApplication", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2865"}, {"id": "models_models_bizpilotpatient", "label": "BizPilotPatient", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2891"}, {"id": "models_models_bizpilotinfusionplan", "label": "BizPilotInfusionPlan", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2920"}, {"id": "models_models_bizpilotinfusionschedule", "label": "BizPilotInfusionSchedule", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2945"}, {"id": "models_models_bizpilotinfusionscheduleproduct", "label": "BizPilotInfusionScheduleProduct", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2974"}, {"id": "models_models_bizpilotcheckup", "label": "BizPilotCheckup", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3001"}, {"id": "models_models_bizpilotcheckupreserveitem", "label": "BizPilotCheckupReserveItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3030"}, {"id": "models_models_bizpilotcheckupactualitem", "label": "BizPilotCheckupActualItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3050"}, {"id": "models_models_bizpilotdelivery", "label": "BizPilotDelivery", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3070"}, {"id": "models_models_bizpilotdeliverymaterial", "label": "BizPilotDeliveryMaterial", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3089"}, {"id": "models_models_bizpilotdeliverymethod", "label": "BizPilotDeliveryMethod", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3110"}, {"id": "models_models_bizpilotinfusionconfirm", "label": "BizPilotInfusionConfirm", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3139"}, {"id": "models_models_bizoutboundreleasematerial", "label": "BizOutboundReleaseMaterial", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3160"}, {"id": "models_models_bizoutboundreleasecell", "label": "BizOutboundReleaseCell", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3179"}, {"id": "models_models_bizoutboundreleasepaper", "label": "BizOutboundReleasePaper", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3207"}, {"id": "models_models_bizoutboundhandover", "label": "BizOutboundHandover", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3229"}, {"id": "models_models_bizoutboundreleaseqcmaterial", "label": "BizOutboundReleaseQcMaterial", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3254"}, {"id": "models_models_bizoutboundreleasereview", "label": "BizOutboundReleaseReview", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3279"}, {"id": "models_models_rationale_1", "label": "\u6570\u636e\u6a21\u578b\uff08\u4e0e docs/sql/zkxw.sql \u5168\u5e93\u5bfc\u51fa\u57fa\u7ebf\u5bf9\u9f50\u7684\u6838\u5fc3\u7cfb\u7edf\u8868\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1"}, {"id": "models_models_rationale_11", "label": "Web \u7ba1\u7406\u7aef\u7ea6\u5b9a\u89d2\u8272\uff08\u7531 sys_role.role_name \u6620\u5c04\u800c\u6765\uff0c\u975e\u6570\u636e\u5e93\u679a\u4e3e\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L11"}, {"id": "models_models_rationale_69", "label": "\u7528\u6237-\u89d2\u8272\u5173\u8054 sys_user_role\uff08V0.3\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L69"}, {"id": "models_models_rationale_88", "label": "\u89d2\u8272-\u83dc\u5355\u5173\u8054 sys_role_menu\uff08V0.3\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L88"}, {"id": "models_models_rationale_107", "label": "\u89d2\u8272\u81ea\u5b9a\u4e49\u6570\u636e\u6743\u9650\u660e\u7ec6 sys_role_data_scope_detail", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L107"}, {"id": "models_models_rationale_176", "label": "\u79df\u6237\u8868 sys_tenant\uff08V0.3 2.1.1\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L176"}, {"id": "models_models_rationale_241", "label": "\u7528\u6237-\u804c\u4f4d\u5173\u8054 sys_user_post", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L241"}, {"id": "models_models_rationale_279", "label": "\u5feb\u9012\u516c\u53f8 biz_express_company", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L279"}, {"id": "models_models_rationale_321", "label": "\u7ec6\u80de\u6837\u672c\u7c7b\u578b biz_cell_sample_type", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L321"}, {"id": "models_models_rationale_342", "label": "\u91c7\u96c6\u5730\u533a biz_collection_region", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L342"}, {"id": "models_models_rationale_360", "label": "\u91c7\u96c6\u5730\u533a\u4e0b\u5c5e\u533b\u9662 biz_collection_hospital", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L360"}, {"id": "models_models_rationale_379", "label": "\u91c7\u96c6\u534f\u8bae\u53f7\u6c60 biz_collection_protocol_no", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L379"}, {"id": "models_models_rationale_401", "label": "\u4e1a\u52a1\u534f\u8bae\u53f7\u65e5\u5e8f\u5217\u8868 biz_biz_no_sequence", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L401"}, {"id": "models_models_rationale_421", "label": "\u6837\u672c\u7f16\u7801\u6c60 biz_sample_code", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L421"}, {"id": "models_models_rationale_468", "label": "\u6c11\u65cf\u7801\u8868 sys_ethnic\uff08\u56fd\u6807 GB/T 3304\uff0c\u5168\u5c40\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L468"}, {"id": "models_models_rationale_569", "label": "\u8bf7\u5047\u7533\u8bf7 biz_leave_request", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L569"}, {"id": "models_models_rationale_618", "label": "\u6d41\u7a0b\u5b9a\u4e49\u7248\u672c wf_process_version", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L618"}, {"id": "models_models_rationale_661", "label": "\u6d41\u7a0b\u8fde\u7ebf/\u8f6c\u79fb wf_transition", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L661"}, {"id": "models_models_rationale_682", "label": "\u6d41\u7a0b\u5b9e\u4f8b wf_process_instance", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L682"}, {"id": "models_models_rationale_733", "label": "\u91c7\u96c6\u534f\u8bae\u5355 biz_collection_protocol", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L733"}, {"id": "models_models_rationale_764", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u5ba1\u6838\u8bb0\u5f55 biz_protocol_audit", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L764"}, {"id": "models_models_rationale_785", "label": "\u5165\u5e93\u653e\u884c\u5ba1\u6838 biz_storage_release_review", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L785"}, {"id": "models_models_rationale_818", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u7f34\u8d39\u4e3b\u8868 biz_protocol_payment", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L818"}, {"id": "models_models_rationale_842", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u7f34\u8d39\u660e\u7ec6 biz_protocol_payment_detail", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L842"}, {"id": "models_models_rationale_875", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u5f53\u4e8b\u4eba\u5ba2\u6237\u4fe1\u606f biz_protocol_party_customer", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L875"}, {"id": "models_models_rationale_915", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u91c7\u96c6\u4fe1\u606f biz_protocol_collection_info", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L915"}, {"id": "models_models_rationale_939", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u6837\u672c\u4fe1\u606f biz_protocol_sample", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L939"}, {"id": "models_models_rationale_969", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u6837\u672c\u8fd0\u8f93 biz_protocol_sample_transport", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L969"}, {"id": "models_models_rationale_1021", "label": "\u91c7\u96c6\u534f\u8bae\u5355-\u50a8\u5b58\u8bc1\u4e66 biz_protocol_storage_cert", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1021"}, {"id": "models_models_rationale_1042", "label": "\u6837\u672c\u63a5\u6536\u68c0\u67e5\u9879\u914d\u7f6e biz_sample_reception_check_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1042"}, {"id": "models_models_rationale_1062", "label": "\u6837\u672c\u63a5\u6536\u68c0\u67e5\u9879\u7ed3\u679c biz_sample_reception_check_result", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1062"}, {"id": "models_models_rationale_1084", "label": "\u6837\u672c\u63a5\u6536 biz_sample_reception", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1084"}, {"id": "models_models_rationale_1144", "label": "\u6837\u672c\u8d28\u68c0\u77ed\u4fe1\u901a\u77e5 biz_qc_sms_notification", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1144"}, {"id": "models_models_rationale_1169", "label": "\u6837\u672c\u5165\u5e93\u77ed\u4fe1\u901a\u77e5 biz_storage_entry_sms_notification", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1169"}, {"id": "models_models_rationale_1198", "label": "\u7b2c\u4e09\u65b9\u68c0\u6d4b\u516c\u53f8 biz_qc_third_party_company", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1198"}, {"id": "models_models_rationale_1225", "label": "\u7b2c\u4e09\u65b9\u68c0\u6d4b\u9879\u76ee biz_qc_third_party_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1225"}, {"id": "models_models_rationale_1247", "label": "\u5b9e\u9a8c\u5ba4\u81ea\u68c0\u9879\u76ee biz_qc_lab_test_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1247"}, {"id": "models_models_rationale_1268", "label": "\u8d28\u68c0\u5de5\u5355 biz_qc_work_order", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1268"}, {"id": "models_models_rationale_1308", "label": "\u8d28\u68c0\u5de5\u5355-\u5b9e\u9a8c\u5ba4\u9879\u76ee\u660e\u7ec6 biz_qc_work_order_lab_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1308"}, {"id": "models_models_rationale_1330", "label": "\u8d28\u68c0\u5de5\u5355-\u7b2c\u4e09\u65b9\u9879\u76ee\u660e\u7ec6 biz_qc_work_order_third_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1330"}, {"id": "models_models_rationale_1415", "label": "\u6d01\u51c0\u5ba4\u51fa\u5165\u8bb0\u5f55 biz_clean_room_access_log", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1415"}, {"id": "models_models_rationale_1440", "label": "\u5b58\u50a8\u8bbe\u65bd\u6811 biz_storage_facility", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1440"}, {"id": "models_models_rationale_1461", "label": "\u5b58\u50a8\u8bbe\u65bd\u5c0f\u683c biz_storage_facility_slot", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1461"}, {"id": "models_models_rationale_1484", "label": "\u5e93\u4f4d\u5360\u7528\u8bb0\u5f55 biz_storage_slot_occupancy", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1484"}, {"id": "models_models_rationale_1510", "label": "\u5c55\u9986\u9884\u7ea6 biz_exhibition_appointment", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1510"}, {"id": "models_models_rationale_1538", "label": "\u7ec6\u80de\u4ea7\u54c1\u7c7b\u578b biz_cell_product_type", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1538"}, {"id": "models_models_rationale_1557", "label": "\u7ec6\u80de\u4ea7\u54c1\u89c4\u683c biz_cell_product_spec", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1557"}, {"id": "models_models_rationale_1576", "label": "\u7ec6\u80de\u4ea7\u54c1\u4ef7\u683c\u4f53\u7cfb biz_cell_product_price", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1576"}, {"id": "models_models_rationale_1601", "label": "\u7ec6\u80de\u4ea7\u54c1\u9879\u76ee\u4ef7\u683c\u4f53\u7cfb biz_cell_product_project_system", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1601"}, {"id": "models_models_rationale_1621", "label": "\u9879\u76ee\u4ef7\u683c\u4f53\u7cfb-\u7ec6\u80de\u4ef7\u683c\u660e\u7ec6 biz_cell_product_project_system_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1621"}, {"id": "models_models_rationale_1672", "label": "\u6e20\u9053\u534f\u8bae biz_channel_agreement", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1672"}, {"id": "models_models_rationale_1697", "label": "\u6e20\u9053\u534f\u8bae-\u7ec6\u80de\u4ea7\u54c1\u4ef7\u683c biz_channel_agreement_product_price", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1697"}, {"id": "models_models_rationale_1722", "label": "\u6e20\u9053\u5f00\u7968\u4fe1\u606f biz_channel_invoice", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1722"}, {"id": "models_models_rationale_1746", "label": "\u6e20\u9053\u90ae\u5bc4\u5730\u5740 biz_channel_mail_address", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1746"}, {"id": "models_models_rationale_1767", "label": "\u6e20\u9053\u8d26\u6237\u4f59\u989d biz_channel_account", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1767"}, {"id": "models_models_rationale_1786", "label": "\u6e20\u9053\u4ea7\u54c1\u4efd\u6570\u5e93\u5b58 biz_channel_product_quota", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1786"}, {"id": "models_models_rationale_1812", "label": "\u6e20\u9053\u670d\u52a1\u8ba2\u5355 biz_channel_service_order", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1812"}, {"id": "models_models_rationale_1858", "label": "\u6e20\u9053\u670d\u52a1\u8ba2\u5355\u4ea7\u54c1\u660e\u7ec6 biz_channel_service_order_product", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1858"}, {"id": "models_models_rationale_1887", "label": "\u6e20\u9053\u670d\u52a1\u8ba2\u5355\u6d41\u6c34 biz_channel_service_order_txn", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1887"}, {"id": "models_models_rationale_1922", "label": "\u4f53\u68c0\u673a\u6784 biz_checkup_institution", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1922"}, {"id": "models_models_rationale_1944", "label": "\u4f53\u68c0\u673a\u6784\u5f00\u7968\u4fe1\u606f biz_checkup_institution_invoice", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1944"}, {"id": "models_models_rationale_1968", "label": "\u4f53\u68c0\u673a\u6784\u9879\u76ee\u53ca\u4ef7\u683c biz_checkup_institution_project", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1968"}, {"id": "models_models_rationale_1989", "label": "\u4f53\u68c0\u673a\u6784\u9879\u76ee\u5957\u9910 biz_checkup_institution_package", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1989"}, {"id": "models_models_rationale_2010", "label": "\u4f53\u68c0\u673a\u6784\u9879\u76ee\u5957\u9910\u660e\u7ec6 biz_checkup_institution_package_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2010"}, {"id": "models_models_rationale_2088", "label": "SOP\u6587\u6863 biz_sop_document", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2088"}, {"id": "models_models_rationale_2109", "label": "\u5de5\u5e8f\u5206\u7c7b biz_process_category", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2109"}, {"id": "models_models_rationale_2147", "label": "\u8017\u6750\u5305 biz_consumable_pack", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2147"}, {"id": "models_models_rationale_2169", "label": "\u8017\u6750\u5305\u660e\u7ec6 biz_consumable_pack_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2169"}, {"id": "models_models_rationale_2216", "label": "\u5de5\u827a\u8bd5\u5242 biz_process_reagent", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2216"}, {"id": "models_models_rationale_2240", "label": "\u5de5\u827a\u8017\u6750 biz_process_consumable", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2240"}, {"id": "models_models_rationale_2264", "label": "\u5de5\u827a\u4ea7\u51fa\u7269 biz_process_output", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2264"}, {"id": "models_models_rationale_2303", "label": "\u5de5\u827a\u8def\u7ebf biz_process_route", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2303"}, {"id": "models_models_rationale_2325", "label": "\u5de5\u827a\u8def\u7ebf\u6b65\u9aa4 biz_process_route_step", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2325"}, {"id": "models_models_rationale_2352", "label": "\u5de5\u827a\u8def\u7ebf\u6b65\u9aa4\u8bd5\u5242 biz_process_route_step_reagent", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2352"}, {"id": "models_models_rationale_2376", "label": "\u5de5\u827a\u8def\u7ebf\u6b65\u9aa4\u8017\u6750 biz_process_route_step_consumable", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2376"}, {"id": "models_models_rationale_2400", "label": "\u5de5\u827a\u8def\u7ebf\u6b65\u9aa4\u4ea7\u51fa\u7269 biz_process_route_step_output", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2400"}, {"id": "models_models_rationale_2421", "label": "\u5de5\u827a\u8def\u7ebf\u6b65\u9aa4\u6570\u636e\u91c7\u96c6\u9879 biz_process_route_step_data_collection", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2421"}, {"id": "models_models_rationale_2446", "label": "\u7ec6\u80de\u4ea7\u54c1 biz_cell_product", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2446"}, {"id": "models_models_rationale_2480", "label": "\u751f\u4ea7\u5de5\u5355 biz_production_work_order", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2480"}, {"id": "models_models_rationale_2510", "label": "\u751f\u4ea7\u4efb\u52a1 biz_production_task", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2510"}, {"id": "models_models_rationale_2540", "label": "\u751f\u4ea7\u4efb\u52a1\u6295\u5165\u7269 biz_production_task_input", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2540"}, {"id": "models_models_rationale_2562", "label": "\u751f\u4ea7\u4efb\u52a1\u6b65\u9aa4 biz_production_task_step", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2562"}, {"id": "models_models_rationale_2592", "label": "\u751f\u4ea7\u4efb\u52a1\u6b65\u9aa4\u8bd5\u5242 biz_production_task_step_reagent", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2592"}, {"id": "models_models_rationale_2617", "label": "\u751f\u4ea7\u4efb\u52a1\u6b65\u9aa4\u8017\u6750 biz_production_task_step_consumable", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2617"}, {"id": "models_models_rationale_2642", "label": "\u751f\u4ea7\u4efb\u52a1\u6b65\u9aa4\u4ea7\u51fa\u7269 biz_production_task_step_output", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2642"}, {"id": "models_models_rationale_2663", "label": "\u751f\u4ea7\u4efb\u52a1\u6b65\u9aa4\u6570\u636e\u91c7\u96c6\u9879 biz_production_task_step_data_collection", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2663"}, {"id": "models_models_rationale_2684", "label": "\u751f\u4ea7\u4efb\u52a1\u6700\u7ec8\u4ea7\u51fa biz_production_task_output", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2684"}, {"id": "models_models_rationale_2709", "label": "\u65b0\u751f\u513f\u6ee1\u6708\u5f85\u529e biz_protocol_fullmoon_todo", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2709"}, {"id": "models_models_rationale_2739", "label": "\u4fdd\u9669\u516c\u53f8 biz_insurance_company", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2739"}, {"id": "models_models_rationale_2761", "label": "\u4fdd\u9669\u516c\u53f8\u5f00\u7968\u4fe1\u606f biz_insurance_company_invoice", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2761"}, {"id": "models_models_rationale_2785", "label": "\u4fdd\u9669\u9669\u79cd\u4ef7\u683c biz_insurance_project_price", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2785"}, {"id": "models_models_rationale_2806", "label": "\u8017\u6750\u53d8\u52a8\u8bb0\u5f55 biz_consumable_stock_log", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2806"}, {"id": "models_models_rationale_2836", "label": "\u8bd5\u5242\u53d8\u52a8\u8bb0\u5f55 biz_reagent_stock_log", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2836"}, {"id": "models_models_rationale_2866", "label": "\u6e20\u9053\u4e2d\u8bd5\u670d\u52a1\u7533\u8bf7\u5355 biz_pilot_application", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2866"}, {"id": "models_models_rationale_2892", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u60a3\u8005\u4fe1\u606f biz_pilot_patient", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2892"}, {"id": "models_models_rationale_2921", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u8f93\u6ce8\u65b9\u6848 biz_pilot_infusion_plan", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2921"}, {"id": "models_models_rationale_2946", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u8f93\u6ce8\u8ba1\u5212 biz_pilot_infusion_schedule", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2946"}, {"id": "models_models_rationale_2975", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u8f93\u6ce8\u8ba1\u5212\u7ec6\u80de\u4ea7\u54c1 biz_pilot_infusion_schedule_product", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2975"}, {"id": "models_models_rationale_3002", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u4f53\u68c0\u4fe1\u606f biz_pilot_checkup", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3002"}, {"id": "models_models_rationale_3031", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u4f53\u68c0\u9884\u7ea6\u9879\u76ee biz_pilot_checkup_reserve_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3031"}, {"id": "models_models_rationale_3051", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u4f53\u68c0\u5b9e\u9645\u9879\u76ee biz_pilot_checkup_actual_item", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3051"}, {"id": "models_models_rationale_3071", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u4ea4\u4ed8\u4fe1\u606f biz_pilot_delivery", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3071"}, {"id": "models_models_rationale_3090", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u4ea4\u4ed8\u7269\u6599 biz_pilot_delivery_material", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3090"}, {"id": "models_models_rationale_3111", "label": "\u4e2d\u8bd5\u7533\u8bf7\u5355-\u4ea4\u4ed8\u65b9\u5f0f biz_pilot_delivery_method", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3111"}, {"id": "models_models_rationale_3140", "label": "\u8f93\u6ce8\u8ba1\u5212-\u5e94\u7528\u786e\u8ba4 biz_pilot_infusion_confirm", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3140"}, {"id": "models_models_rationale_3161", "label": "\u51fa\u5e93\u653e\u884c-\u51fa\u5e93\u7269\u6599\u51c6\u5907\u4e3b\u8868 biz_outbound_release_material", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3161"}, {"id": "models_models_rationale_3180", "label": "\u51fa\u5e93\u653e\u884c-\u51fa\u5e93\u7ec6\u80de(\u53f0\u8d26) biz_outbound_release_cell", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3180"}, {"id": "models_models_rationale_3208", "label": "\u51fa\u5e93\u653e\u884c-\u5176\u4ed6\u7eb8\u8d28\u6750\u6599(\u53f0\u8d26) biz_outbound_release_paper", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3208"}, {"id": "models_models_rationale_3230", "label": "\u8f93\u6ce8\u8ba1\u5212-\u51fa\u5e93\u4ea4\u63a5 biz_outbound_handover", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3230"}, {"id": "models_models_rationale_3255", "label": "\u51fa\u5e93\u653e\u884c-\u8d28\u68c0\u7269\u6599(\u53f0\u8d26) biz_outbound_release_qc_material", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3255"}, {"id": "models_models_rationale_3280", "label": "\u51fa\u5e93\u653e\u884c\u5ba1\u6838 biz_outbound_release_review", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3280"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "enum", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_userrole", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L10", "weight": 1.0}, {"source": "models_models_userrole", "target": "str", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysuser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L22", "weight": 1.0}, {"source": "models_models_sysuser", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysrole", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L48", "weight": 1.0}, {"source": "models_models_sysrole", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L48", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysuserrole", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L68", "weight": 1.0}, {"source": "models_models_sysuserrole", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysrolemenu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L87", "weight": 1.0}, {"source": "models_models_sysrolemenu", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L87", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysroledatascopedetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L106", "weight": 1.0}, {"source": "models_models_sysroledatascopedetail", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysmenu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L126", "weight": 1.0}, {"source": "models_models_sysmenu", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysdept", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L152", "weight": 1.0}, {"source": "models_models_sysdept", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L152", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_systenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L175", "weight": 1.0}, {"source": "models_models_systenant", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_syssite", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L195", "weight": 1.0}, {"source": "models_models_syssite", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_syspost", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L220", "weight": 1.0}, {"source": "models_models_syspost", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysuserpost", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L240", "weight": 1.0}, {"source": "models_models_sysuserpost", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizitemunit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L259", "weight": 1.0}, {"source": "models_models_bizitemunit", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizexpresscompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L278", "weight": 1.0}, {"source": "models_models_bizexpresscompany", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcustomer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L297", "weight": 1.0}, {"source": "models_models_bizcustomer", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellsampletype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L320", "weight": 1.0}, {"source": "models_models_bizcellsampletype", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcollectionregion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L341", "weight": 1.0}, {"source": "models_models_bizcollectionregion", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L341", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcollectionhospital", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L359", "weight": 1.0}, {"source": "models_models_bizcollectionhospital", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L359", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcollectionprotocolno", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L378", "weight": 1.0}, {"source": "models_models_bizcollectionprotocolno", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizbiznosequence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L400", "weight": 1.0}, {"source": "models_models_bizbiznosequence", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L400", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizsamplecode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L420", "weight": 1.0}, {"source": "models_models_bizsamplecode", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L420", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysdicttype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L448", "weight": 1.0}, {"source": "models_models_sysdicttype", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L448", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysethnic", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L467", "weight": 1.0}, {"source": "models_models_sysethnic", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysdictdata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L486", "weight": 1.0}, {"source": "models_models_sysdictdata", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L486", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysapirequestlog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L511", "weight": 1.0}, {"source": "models_models_sysapirequestlog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_sysapirequestloghis", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L537", "weight": 1.0}, {"source": "models_models_sysapirequestloghis", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L537", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizleaverequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L568", "weight": 1.0}, {"source": "models_models_bizleaverequest", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L568", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_wfprocessdef", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L597", "weight": 1.0}, {"source": "models_models_wfprocessdef", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L597", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_wfprocessversion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L617", "weight": 1.0}, {"source": "models_models_wfprocessversion", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L617", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_wfnode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L638", "weight": 1.0}, {"source": "models_models_wfnode", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L638", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_wftransition", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L660", "weight": 1.0}, {"source": "models_models_wftransition", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L660", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_wfprocessinstance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L681", "weight": 1.0}, {"source": "models_models_wfprocessinstance", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L681", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_wftask", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L705", "weight": 1.0}, {"source": "models_models_wftask", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L705", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcollectionprotocol", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L732", "weight": 1.0}, {"source": "models_models_bizcollectionprotocol", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L732", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolaudit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L763", "weight": 1.0}, {"source": "models_models_bizprotocolaudit", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L763", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizstoragereleasereview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L784", "weight": 1.0}, {"source": "models_models_bizstoragereleasereview", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L784", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolpayment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L817", "weight": 1.0}, {"source": "models_models_bizprotocolpayment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L817", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolpaymentdetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L841", "weight": 1.0}, {"source": "models_models_bizprotocolpaymentdetail", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L841", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolpartycustomer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L874", "weight": 1.0}, {"source": "models_models_bizprotocolpartycustomer", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L874", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolcollectioninfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L914", "weight": 1.0}, {"source": "models_models_bizprotocolcollectioninfo", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L914", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolsample", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L938", "weight": 1.0}, {"source": "models_models_bizprotocolsample", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L938", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolsampletransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L968", "weight": 1.0}, {"source": "models_models_bizprotocolsampletransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L968", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizattachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L996", "weight": 1.0}, {"source": "models_models_bizattachment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L996", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolstoragecert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1020", "weight": 1.0}, {"source": "models_models_bizprotocolstoragecert", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1020", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizsamplereceptioncheckitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1041", "weight": 1.0}, {"source": "models_models_bizsamplereceptioncheckitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1041", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizsamplereceptioncheckresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1061", "weight": 1.0}, {"source": "models_models_bizsamplereceptioncheckresult", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1061", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizsamplereception", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1083", "weight": 1.0}, {"source": "models_models_bizsamplereception", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1083", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizsamplesmsnotification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1122", "weight": 1.0}, {"source": "models_models_bizsamplesmsnotification", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqcsmsnotification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1143", "weight": 1.0}, {"source": "models_models_bizqcsmsnotification", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizstorageentrysmsnotification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1168", "weight": 1.0}, {"source": "models_models_bizstorageentrysmsnotification", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqcthirdpartycompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1197", "weight": 1.0}, {"source": "models_models_bizqcthirdpartycompany", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1197", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqcthirdpartyitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1224", "weight": 1.0}, {"source": "models_models_bizqcthirdpartyitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1224", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqclabtestitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1246", "weight": 1.0}, {"source": "models_models_bizqclabtestitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqcworkorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1267", "weight": 1.0}, {"source": "models_models_bizqcworkorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1267", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqcworkorderlabitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1307", "weight": 1.0}, {"source": "models_models_bizqcworkorderlabitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqcworkorderthirditem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1329", "weight": 1.0}, {"source": "models_models_bizqcworkorderthirditem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1329", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizqctask", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1354", "weight": 1.0}, {"source": "models_models_bizqctask", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcleanroom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1392", "weight": 1.0}, {"source": "models_models_bizcleanroom", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1392", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcleanroomaccesslog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1414", "weight": 1.0}, {"source": "models_models_bizcleanroomaccesslog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1414", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizstoragefacility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1439", "weight": 1.0}, {"source": "models_models_bizstoragefacility", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1439", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizstoragefacilityslot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1460", "weight": 1.0}, {"source": "models_models_bizstoragefacilityslot", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizstorageslotoccupancy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1483", "weight": 1.0}, {"source": "models_models_bizstorageslotoccupancy", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1483", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizexhibitionappointment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1509", "weight": 1.0}, {"source": "models_models_bizexhibitionappointment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1509", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellproducttype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1537", "weight": 1.0}, {"source": "models_models_bizcellproducttype", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1537", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellproductspec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1556", "weight": 1.0}, {"source": "models_models_bizcellproductspec", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1556", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellproductprice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1575", "weight": 1.0}, {"source": "models_models_bizcellproductprice", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1575", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellproductprojectsystem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1600", "weight": 1.0}, {"source": "models_models_bizcellproductprojectsystem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1600", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellproductprojectsystemitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1620", "weight": 1.0}, {"source": "models_models_bizcellproductprojectsystemitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1620", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1647", "weight": 1.0}, {"source": "models_models_bizchannel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1647", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelagreement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1671", "weight": 1.0}, {"source": "models_models_bizchannelagreement", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelagreementproductprice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1696", "weight": 1.0}, {"source": "models_models_bizchannelagreementproductprice", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1696", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelinvoice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1721", "weight": 1.0}, {"source": "models_models_bizchannelinvoice", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelmailaddress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1745", "weight": 1.0}, {"source": "models_models_bizchannelmailaddress", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1745", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelaccount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1766", "weight": 1.0}, {"source": "models_models_bizchannelaccount", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1766", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelproductquota", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1785", "weight": 1.0}, {"source": "models_models_bizchannelproductquota", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1785", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelserviceorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1811", "weight": 1.0}, {"source": "models_models_bizchannelserviceorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1811", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelserviceorderproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1857", "weight": 1.0}, {"source": "models_models_bizchannelserviceorderproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1857", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizchannelserviceordertxn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1886", "weight": 1.0}, {"source": "models_models_bizchannelserviceordertxn", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1886", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcheckupinstitution", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1921", "weight": 1.0}, {"source": "models_models_bizcheckupinstitution", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1921", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcheckupinstitutioninvoice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1943", "weight": 1.0}, {"source": "models_models_bizcheckupinstitutioninvoice", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1943", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcheckupinstitutionproject", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1967", "weight": 1.0}, {"source": "models_models_bizcheckupinstitutionproject", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1967", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcheckupinstitutionpackage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1988", "weight": 1.0}, {"source": "models_models_bizcheckupinstitutionpackage", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1988", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcheckupinstitutionpackageitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2009", "weight": 1.0}, {"source": "models_models_bizcheckupinstitutionpackageitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2009", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizconsumable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2035", "weight": 1.0}, {"source": "models_models_bizconsumable", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2035", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizreagent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2061", "weight": 1.0}, {"source": "models_models_bizreagent", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2061", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizsopdocument", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2087", "weight": 1.0}, {"source": "models_models_bizsopdocument", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2087", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocesscategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2108", "weight": 1.0}, {"source": "models_models_bizprocesscategory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutputtype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2127", "weight": 1.0}, {"source": "models_models_bizoutputtype", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizconsumablepack", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2146", "weight": 1.0}, {"source": "models_models_bizconsumablepack", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizconsumablepackitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2168", "weight": 1.0}, {"source": "models_models_bizconsumablepackitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2191", "weight": 1.0}, {"source": "models_models_bizprocess", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2191", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessreagent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2215", "weight": 1.0}, {"source": "models_models_bizprocessreagent", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2215", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessconsumable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2239", "weight": 1.0}, {"source": "models_models_bizprocessconsumable", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessoutput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2263", "weight": 1.0}, {"source": "models_models_bizprocessoutput", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2263", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessdatacollection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2284", "weight": 1.0}, {"source": "models_models_bizprocessdatacollection", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessroute", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2302", "weight": 1.0}, {"source": "models_models_bizprocessroute", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessroutestep", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2324", "weight": 1.0}, {"source": "models_models_bizprocessroutestep", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2324", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessroutestepreagent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2351", "weight": 1.0}, {"source": "models_models_bizprocessroutestepreagent", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2351", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessroutestepconsumable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2375", "weight": 1.0}, {"source": "models_models_bizprocessroutestepconsumable", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessroutestepoutput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2399", "weight": 1.0}, {"source": "models_models_bizprocessroutestepoutput", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2399", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprocessroutestepdatacollection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2420", "weight": 1.0}, {"source": "models_models_bizprocessroutestepdatacollection", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2420", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizcellproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2445", "weight": 1.0}, {"source": "models_models_bizcellproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2445", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductionworkorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2479", "weight": 1.0}, {"source": "models_models_bizproductionworkorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontask", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2509", "weight": 1.0}, {"source": "models_models_bizproductiontask", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2509", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskinput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2539", "weight": 1.0}, {"source": "models_models_bizproductiontaskinput", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2539", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskstep", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2561", "weight": 1.0}, {"source": "models_models_bizproductiontaskstep", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskstepreagent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2591", "weight": 1.0}, {"source": "models_models_bizproductiontaskstepreagent", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2591", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskstepconsumable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2616", "weight": 1.0}, {"source": "models_models_bizproductiontaskstepconsumable", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2616", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskstepoutput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2641", "weight": 1.0}, {"source": "models_models_bizproductiontaskstepoutput", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2641", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskstepdatacollection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2662", "weight": 1.0}, {"source": "models_models_bizproductiontaskstepdatacollection", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2662", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizproductiontaskoutput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2683", "weight": 1.0}, {"source": "models_models_bizproductiontaskoutput", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2683", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizprotocolfullmoontodo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2708", "weight": 1.0}, {"source": "models_models_bizprotocolfullmoontodo", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2708", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizinsurancecompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2738", "weight": 1.0}, {"source": "models_models_bizinsurancecompany", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizinsurancecompanyinvoice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2760", "weight": 1.0}, {"source": "models_models_bizinsurancecompanyinvoice", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2760", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizinsuranceprojectprice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2784", "weight": 1.0}, {"source": "models_models_bizinsuranceprojectprice", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2784", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizconsumablestocklog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2805", "weight": 1.0}, {"source": "models_models_bizconsumablestocklog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizreagentstocklog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2835", "weight": 1.0}, {"source": "models_models_bizreagentstocklog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2835", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotapplication", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2865", "weight": 1.0}, {"source": "models_models_bizpilotapplication", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2865", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotpatient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2891", "weight": 1.0}, {"source": "models_models_bizpilotpatient", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2891", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotinfusionplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2920", "weight": 1.0}, {"source": "models_models_bizpilotinfusionplan", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2920", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotinfusionschedule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2945", "weight": 1.0}, {"source": "models_models_bizpilotinfusionschedule", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2945", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotinfusionscheduleproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2974", "weight": 1.0}, {"source": "models_models_bizpilotinfusionscheduleproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2974", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotcheckup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3001", "weight": 1.0}, {"source": "models_models_bizpilotcheckup", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3001", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotcheckupreserveitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3030", "weight": 1.0}, {"source": "models_models_bizpilotcheckupreserveitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3030", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotcheckupactualitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3050", "weight": 1.0}, {"source": "models_models_bizpilotcheckupactualitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3050", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotdelivery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3070", "weight": 1.0}, {"source": "models_models_bizpilotdelivery", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3070", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotdeliverymaterial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3089", "weight": 1.0}, {"source": "models_models_bizpilotdeliverymaterial", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3089", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotdeliverymethod", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3110", "weight": 1.0}, {"source": "models_models_bizpilotdeliverymethod", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizpilotinfusionconfirm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3139", "weight": 1.0}, {"source": "models_models_bizpilotinfusionconfirm", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutboundreleasematerial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3160", "weight": 1.0}, {"source": "models_models_bizoutboundreleasematerial", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3160", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutboundreleasecell", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3179", "weight": 1.0}, {"source": "models_models_bizoutboundreleasecell", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutboundreleasepaper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3207", "weight": 1.0}, {"source": "models_models_bizoutboundreleasepaper", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutboundhandover", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3229", "weight": 1.0}, {"source": "models_models_bizoutboundhandover", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutboundreleaseqcmaterial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3254", "weight": 1.0}, {"source": "models_models_bizoutboundreleaseqcmaterial", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3254", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "models_models_bizoutboundreleasereview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3279", "weight": 1.0}, {"source": "models_models_bizoutboundreleasereview", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3279", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "app_models_qc_param", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3305", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "app_models_qc_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "app_models_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "target": "app_models_clinical_payment", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3308", "weight": 1.0}, {"source": "models_models_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1", "weight": 1.0}, {"source": "models_models_rationale_11", "target": "models_models_userrole", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L11", "weight": 1.0}, {"source": "models_models_rationale_69", "target": "models_models_sysuserrole", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L69", "weight": 1.0}, {"source": "models_models_rationale_88", "target": "models_models_sysrolemenu", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L88", "weight": 1.0}, {"source": "models_models_rationale_107", "target": "models_models_sysroledatascopedetail", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L107", "weight": 1.0}, {"source": "models_models_rationale_176", "target": "models_models_systenant", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L176", "weight": 1.0}, {"source": "models_models_rationale_241", "target": "models_models_sysuserpost", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L241", "weight": 1.0}, {"source": "models_models_rationale_279", "target": "models_models_bizexpresscompany", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L279", "weight": 1.0}, {"source": "models_models_rationale_321", "target": "models_models_bizcellsampletype", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L321", "weight": 1.0}, {"source": "models_models_rationale_342", "target": "models_models_bizcollectionregion", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L342", "weight": 1.0}, {"source": "models_models_rationale_360", "target": "models_models_bizcollectionhospital", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L360", "weight": 1.0}, {"source": "models_models_rationale_379", "target": "models_models_bizcollectionprotocolno", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L379", "weight": 1.0}, {"source": "models_models_rationale_401", "target": "models_models_bizbiznosequence", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L401", "weight": 1.0}, {"source": "models_models_rationale_421", "target": "models_models_bizsamplecode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L421", "weight": 1.0}, {"source": "models_models_rationale_468", "target": "models_models_sysethnic", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L468", "weight": 1.0}, {"source": "models_models_rationale_569", "target": "models_models_bizleaverequest", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L569", "weight": 1.0}, {"source": "models_models_rationale_618", "target": "models_models_wfprocessversion", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L618", "weight": 1.0}, {"source": "models_models_rationale_661", "target": "models_models_wftransition", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L661", "weight": 1.0}, {"source": "models_models_rationale_682", "target": "models_models_wfprocessinstance", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L682", "weight": 1.0}, {"source": "models_models_rationale_733", "target": "models_models_bizcollectionprotocol", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L733", "weight": 1.0}, {"source": "models_models_rationale_764", "target": "models_models_bizprotocolaudit", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L764", "weight": 1.0}, {"source": "models_models_rationale_785", "target": "models_models_bizstoragereleasereview", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L785", "weight": 1.0}, {"source": "models_models_rationale_818", "target": "models_models_bizprotocolpayment", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L818", "weight": 1.0}, {"source": "models_models_rationale_842", "target": "models_models_bizprotocolpaymentdetail", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L842", "weight": 1.0}, {"source": "models_models_rationale_875", "target": "models_models_bizprotocolpartycustomer", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L875", "weight": 1.0}, {"source": "models_models_rationale_915", "target": "models_models_bizprotocolcollectioninfo", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L915", "weight": 1.0}, {"source": "models_models_rationale_939", "target": "models_models_bizprotocolsample", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L939", "weight": 1.0}, {"source": "models_models_rationale_969", "target": "models_models_bizprotocolsampletransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L969", "weight": 1.0}, {"source": "models_models_rationale_1021", "target": "models_models_bizprotocolstoragecert", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1021", "weight": 1.0}, {"source": "models_models_rationale_1042", "target": "models_models_bizsamplereceptioncheckitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1042", "weight": 1.0}, {"source": "models_models_rationale_1062", "target": "models_models_bizsamplereceptioncheckresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1062", "weight": 1.0}, {"source": "models_models_rationale_1084", "target": "models_models_bizsamplereception", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1084", "weight": 1.0}, {"source": "models_models_rationale_1144", "target": "models_models_bizqcsmsnotification", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1144", "weight": 1.0}, {"source": "models_models_rationale_1169", "target": "models_models_bizstorageentrysmsnotification", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1169", "weight": 1.0}, {"source": "models_models_rationale_1198", "target": "models_models_bizqcthirdpartycompany", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1198", "weight": 1.0}, {"source": "models_models_rationale_1225", "target": "models_models_bizqcthirdpartyitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1225", "weight": 1.0}, {"source": "models_models_rationale_1247", "target": "models_models_bizqclabtestitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1247", "weight": 1.0}, {"source": "models_models_rationale_1268", "target": "models_models_bizqcworkorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1268", "weight": 1.0}, {"source": "models_models_rationale_1308", "target": "models_models_bizqcworkorderlabitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1308", "weight": 1.0}, {"source": "models_models_rationale_1330", "target": "models_models_bizqcworkorderthirditem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1330", "weight": 1.0}, {"source": "models_models_rationale_1415", "target": "models_models_bizcleanroomaccesslog", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1415", "weight": 1.0}, {"source": "models_models_rationale_1440", "target": "models_models_bizstoragefacility", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1440", "weight": 1.0}, {"source": "models_models_rationale_1461", "target": "models_models_bizstoragefacilityslot", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1461", "weight": 1.0}, {"source": "models_models_rationale_1484", "target": "models_models_bizstorageslotoccupancy", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1484", "weight": 1.0}, {"source": "models_models_rationale_1510", "target": "models_models_bizexhibitionappointment", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1510", "weight": 1.0}, {"source": "models_models_rationale_1538", "target": "models_models_bizcellproducttype", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1538", "weight": 1.0}, {"source": "models_models_rationale_1557", "target": "models_models_bizcellproductspec", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1557", "weight": 1.0}, {"source": "models_models_rationale_1576", "target": "models_models_bizcellproductprice", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1576", "weight": 1.0}, {"source": "models_models_rationale_1601", "target": "models_models_bizcellproductprojectsystem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1601", "weight": 1.0}, {"source": "models_models_rationale_1621", "target": "models_models_bizcellproductprojectsystemitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1621", "weight": 1.0}, {"source": "models_models_rationale_1672", "target": "models_models_bizchannelagreement", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1672", "weight": 1.0}, {"source": "models_models_rationale_1697", "target": "models_models_bizchannelagreementproductprice", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1697", "weight": 1.0}, {"source": "models_models_rationale_1722", "target": "models_models_bizchannelinvoice", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1722", "weight": 1.0}, {"source": "models_models_rationale_1746", "target": "models_models_bizchannelmailaddress", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1746", "weight": 1.0}, {"source": "models_models_rationale_1767", "target": "models_models_bizchannelaccount", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1767", "weight": 1.0}, {"source": "models_models_rationale_1786", "target": "models_models_bizchannelproductquota", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1786", "weight": 1.0}, {"source": "models_models_rationale_1812", "target": "models_models_bizchannelserviceorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1812", "weight": 1.0}, {"source": "models_models_rationale_1858", "target": "models_models_bizchannelserviceorderproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1858", "weight": 1.0}, {"source": "models_models_rationale_1887", "target": "models_models_bizchannelserviceordertxn", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1887", "weight": 1.0}, {"source": "models_models_rationale_1922", "target": "models_models_bizcheckupinstitution", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1922", "weight": 1.0}, {"source": "models_models_rationale_1944", "target": "models_models_bizcheckupinstitutioninvoice", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1944", "weight": 1.0}, {"source": "models_models_rationale_1968", "target": "models_models_bizcheckupinstitutionproject", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1968", "weight": 1.0}, {"source": "models_models_rationale_1989", "target": "models_models_bizcheckupinstitutionpackage", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1989", "weight": 1.0}, {"source": "models_models_rationale_2010", "target": "models_models_bizcheckupinstitutionpackageitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2010", "weight": 1.0}, {"source": "models_models_rationale_2088", "target": "models_models_bizsopdocument", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2088", "weight": 1.0}, {"source": "models_models_rationale_2109", "target": "models_models_bizprocesscategory", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2109", "weight": 1.0}, {"source": "models_models_rationale_2147", "target": "models_models_bizconsumablepack", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2147", "weight": 1.0}, {"source": "models_models_rationale_2169", "target": "models_models_bizconsumablepackitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2169", "weight": 1.0}, {"source": "models_models_rationale_2216", "target": "models_models_bizprocessreagent", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2216", "weight": 1.0}, {"source": "models_models_rationale_2240", "target": "models_models_bizprocessconsumable", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2240", "weight": 1.0}, {"source": "models_models_rationale_2264", "target": "models_models_bizprocessoutput", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2264", "weight": 1.0}, {"source": "models_models_rationale_2303", "target": "models_models_bizprocessroute", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2303", "weight": 1.0}, {"source": "models_models_rationale_2325", "target": "models_models_bizprocessroutestep", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2325", "weight": 1.0}, {"source": "models_models_rationale_2352", "target": "models_models_bizprocessroutestepreagent", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2352", "weight": 1.0}, {"source": "models_models_rationale_2376", "target": "models_models_bizprocessroutestepconsumable", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2376", "weight": 1.0}, {"source": "models_models_rationale_2400", "target": "models_models_bizprocessroutestepoutput", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2400", "weight": 1.0}, {"source": "models_models_rationale_2421", "target": "models_models_bizprocessroutestepdatacollection", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2421", "weight": 1.0}, {"source": "models_models_rationale_2446", "target": "models_models_bizcellproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2446", "weight": 1.0}, {"source": "models_models_rationale_2480", "target": "models_models_bizproductionworkorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2480", "weight": 1.0}, {"source": "models_models_rationale_2510", "target": "models_models_bizproductiontask", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2510", "weight": 1.0}, {"source": "models_models_rationale_2540", "target": "models_models_bizproductiontaskinput", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2540", "weight": 1.0}, {"source": "models_models_rationale_2562", "target": "models_models_bizproductiontaskstep", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2562", "weight": 1.0}, {"source": "models_models_rationale_2592", "target": "models_models_bizproductiontaskstepreagent", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2592", "weight": 1.0}, {"source": "models_models_rationale_2617", "target": "models_models_bizproductiontaskstepconsumable", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2617", "weight": 1.0}, {"source": "models_models_rationale_2642", "target": "models_models_bizproductiontaskstepoutput", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2642", "weight": 1.0}, {"source": "models_models_rationale_2663", "target": "models_models_bizproductiontaskstepdatacollection", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2663", "weight": 1.0}, {"source": "models_models_rationale_2684", "target": "models_models_bizproductiontaskoutput", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2684", "weight": 1.0}, {"source": "models_models_rationale_2709", "target": "models_models_bizprotocolfullmoontodo", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2709", "weight": 1.0}, {"source": "models_models_rationale_2739", "target": "models_models_bizinsurancecompany", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2739", "weight": 1.0}, {"source": "models_models_rationale_2761", "target": "models_models_bizinsurancecompanyinvoice", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2761", "weight": 1.0}, {"source": "models_models_rationale_2785", "target": "models_models_bizinsuranceprojectprice", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2785", "weight": 1.0}, {"source": "models_models_rationale_2806", "target": "models_models_bizconsumablestocklog", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2806", "weight": 1.0}, {"source": "models_models_rationale_2836", "target": "models_models_bizreagentstocklog", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2836", "weight": 1.0}, {"source": "models_models_rationale_2866", "target": "models_models_bizpilotapplication", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2866", "weight": 1.0}, {"source": "models_models_rationale_2892", "target": "models_models_bizpilotpatient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2892", "weight": 1.0}, {"source": "models_models_rationale_2921", "target": "models_models_bizpilotinfusionplan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2921", "weight": 1.0}, {"source": "models_models_rationale_2946", "target": "models_models_bizpilotinfusionschedule", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2946", "weight": 1.0}, {"source": "models_models_rationale_2975", "target": "models_models_bizpilotinfusionscheduleproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L2975", "weight": 1.0}, {"source": "models_models_rationale_3002", "target": "models_models_bizpilotcheckup", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3002", "weight": 1.0}, {"source": "models_models_rationale_3031", "target": "models_models_bizpilotcheckupreserveitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3031", "weight": 1.0}, {"source": "models_models_rationale_3051", "target": "models_models_bizpilotcheckupactualitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3051", "weight": 1.0}, {"source": "models_models_rationale_3071", "target": "models_models_bizpilotdelivery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3071", "weight": 1.0}, {"source": "models_models_rationale_3090", "target": "models_models_bizpilotdeliverymaterial", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3090", "weight": 1.0}, {"source": "models_models_rationale_3111", "target": "models_models_bizpilotdeliverymethod", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3111", "weight": 1.0}, {"source": "models_models_rationale_3140", "target": "models_models_bizpilotinfusionconfirm", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3140", "weight": 1.0}, {"source": "models_models_rationale_3161", "target": "models_models_bizoutboundreleasematerial", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3161", "weight": 1.0}, {"source": "models_models_rationale_3180", "target": "models_models_bizoutboundreleasecell", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3180", "weight": 1.0}, {"source": "models_models_rationale_3208", "target": "models_models_bizoutboundreleasepaper", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3208", "weight": 1.0}, {"source": "models_models_rationale_3230", "target": "models_models_bizoutboundhandover", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3230", "weight": 1.0}, {"source": "models_models_rationale_3255", "target": "models_models_bizoutboundreleaseqcmaterial", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3255", "weight": 1.0}, {"source": "models_models_rationale_3280", "target": "models_models_bizoutboundreleasereview", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L3280", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/bb566178ac35853b816b8845ec5e25e10a5a7b9c46c3f730e2ead6531770a388.json b/backend/app/graphify-out/cache/ast/bb566178ac35853b816b8845ec5e25e10a5a7b9c46c3f730e2ead6531770a388.json new file mode 100644 index 00000000..25f646ea --- /dev/null +++ b/backend/app/graphify-out/cache/ast/bb566178ac35853b816b8845ec5e25e10a5a7b9c46c3f730e2ead6531770a388.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "label": "protocol_payment_installment.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L1"}, {"id": "services_protocol_payment_installment_add_days_yyyymmdd", "label": "add_days_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L15"}, {"id": "services_protocol_payment_installment_add_months_yyyymmdd", "label": "add_months_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L28"}, {"id": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "label": "add_interval_months_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L43"}, {"id": "services_protocol_payment_installment_calc_fq_installment_due_date", "label": "calc_fq_installment_due_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L63"}, {"id": "services_protocol_payment_installment_rationale_1", "label": "\u5206\u671f\u7f34\u8d39\uff1a\u5e94\u7f34\u65e5\u8ba1\u7b97\uff08\u6574\u6570\u6708\u6309\u65e5\u5386\u9012\u589e\uff0c\u5c0f\u6570\u6708\u6309 30 \u5929/\u6708\u6362\u7b97\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L1"}, {"id": "services_protocol_payment_installment_rationale_44", "label": "\u6574\u6570\u90e8\u5206\u6309\u65e5\u5386\u52a0\u6708\uff0c\u5c0f\u6570\u90e8\u5206\u6309 30 \u5929/\u6708\u6362\u7b97\u4e3a\u5929\u6570\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L44"}, {"id": "services_protocol_payment_installment_rationale_68", "label": "\u7b2c 1 \u671f=\u5f00\u59cb\u65f6\u95f4\uff1b\u7b2c 2 \u671f\u8d77\u5728\u95f4\u9694\u9012\u589e\u57fa\u7840\u4e0a\u63d0\u524d 10 \u5929\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L68"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "calendar", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "services_protocol_payment_installment_add_days_yyyymmdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "services_protocol_payment_installment_add_months_yyyymmdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "target": "services_protocol_payment_installment_calc_fq_installment_due_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L63", "weight": 1.0}, {"source": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "target": "services_protocol_payment_installment_add_months_yyyymmdd", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L55", "weight": 1.0}, {"source": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "target": "services_protocol_payment_installment_add_days_yyyymmdd", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L59", "weight": 1.0}, {"source": "services_protocol_payment_installment_calc_fq_installment_due_date", "target": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L70", "weight": 1.0}, {"source": "services_protocol_payment_installment_calc_fq_installment_due_date", "target": "services_protocol_payment_installment_add_days_yyyymmdd", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L72", "weight": 1.0}, {"source": "services_protocol_payment_installment_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_services_protocol_payment_installment_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L1", "weight": 1.0}, {"source": "services_protocol_payment_installment_rationale_44", "target": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L44", "weight": 1.0}, {"source": "services_protocol_payment_installment_rationale_68", "target": "services_protocol_payment_installment_calc_fq_installment_due_date", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L68", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L16"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L16"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L17"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L21"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L22"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L23"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "date", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L24"}, {"caller_nid": "services_protocol_payment_installment_add_days_yyyymmdd", "callee": "timedelta", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L24"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L29"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L29"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L30"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L32"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L33"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L34"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "monthrange", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L38"}, {"caller_nid": "services_protocol_payment_installment_add_months_yyyymmdd", "callee": "min", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L39"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L45"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L45"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L46"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L48"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L48"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L51"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "to_integral_value", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L51"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L52"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L57"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "round", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L57"}, {"caller_nid": "services_protocol_payment_installment_add_interval_months_yyyymmdd", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L57"}, {"caller_nid": "services_protocol_payment_installment_calc_fq_installment_due_date", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L69"}, {"caller_nid": "services_protocol_payment_installment_calc_fq_installment_due_date", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L69"}, {"caller_nid": "services_protocol_payment_installment_calc_fq_installment_due_date", "callee": "Decimal", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L69"}, {"caller_nid": "services_protocol_payment_installment_calc_fq_installment_due_date", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/protocol_payment_installment.py", "source_location": "L69"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/c3377cfd7b2471999594b3d58ccddfe69aaee706f9da4e81b59e9f7aadcdcbf0.json b/backend/app/graphify-out/cache/ast/c3377cfd7b2471999594b3d58ccddfe69aaee706f9da4e81b59e9f7aadcdcbf0.json new file mode 100644 index 00000000..7b9f193e --- /dev/null +++ b/backend/app/graphify-out/cache/ast/c3377cfd7b2471999594b3d58ccddfe69aaee706f9da4e81b59e9f7aadcdcbf0.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/graphify-out/cache/ast/d73124ef65ab8f81202b8e836e6ddbfe58077a8130165067fb5ac2c5f896567d.json b/backend/app/graphify-out/cache/ast/d73124ef65ab8f81202b8e836e6ddbfe58077a8130165067fb5ac2c5f896567d.json new file mode 100644 index 00000000..b22d6f04 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/d73124ef65ab8f81202b8e836e6ddbfe58077a8130165067fb5ac2c5f896567d.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": "L38"}, {"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": "L46"}, {"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": "L64"}, {"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": "L86"}, {"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": "L94"}, {"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": "L105"}, {"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": "L112"}, {"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": "L170"}, {"id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L232"}, {"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": "L251"}, {"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": "L261"}, {"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": "L297"}, {"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": "L329"}, {"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": "L365"}, {"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_47", "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": "L47"}, {"id": "api_public_rationale_65", "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": "L65"}, {"id": "api_public_rationale_106", "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": "L106"}, {"id": "api_public_rationale_117", "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": "L117"}, {"id": "api_public_rationale_233", "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": "L233"}, {"id": "api_public_rationale_252", "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": "L252"}, {"id": "api_public_rationale_266", "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": "L266"}, {"id": "api_public_rationale_334", "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": "L334"}, {"id": "api_public_rationale_366", "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": "L366"}], "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_models_models", "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_crud_user", "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_core_utils", "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", "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_services_web_auth_roles", "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_schemas_auth", "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_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L33", "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": "L38", "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": "L46", "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": "L64", "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": "L86", "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": "L94", "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": "L105", "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": "L112", "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": "L170", "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": "L232", "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": "L251", "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": "L261", "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": "L297", "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": "L329", "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": "L365", "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": "L60", "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": "L142", "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": "L164", "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": "L204", "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": "L254", "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": "L255", "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": "L268", "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": "L289", "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": "L304", "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": "L336", "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_47", "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": "L47", "weight": 1.0}, {"source": "api_public_rationale_65", "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": "L65", "weight": 1.0}, {"source": "api_public_rationale_106", "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": "L106", "weight": 1.0}, {"source": "api_public_rationale_117", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L117", "weight": 1.0}, {"source": "api_public_rationale_233", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L233", "weight": 1.0}, {"source": "api_public_rationale_252", "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": "L252", "weight": 1.0}, {"source": "api_public_rationale_266", "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": "L266", "weight": 1.0}, {"source": "api_public_rationale_334", "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": "L334", "weight": 1.0}, {"source": "api_public_rationale_366", "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": "L366", "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": "L39"}, {"caller_nid": "api_public_avatar_url_field", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L42"}, {"caller_nid": "api_public_avatar_url_field", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L42"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L48"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "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": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L55"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L56"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L56"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L66"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L67"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L67"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L69"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L70"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L71"}, {"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": "get", "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": "L74"}, {"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": "L81"}, {"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": "L87"}, {"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": "L88"}, {"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": "L89"}, {"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": "L90"}, {"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": "L91"}, {"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": "L107"}, {"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": "L108"}, {"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": "L108"}, {"caller_nid": "api_public_web_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L118"}, {"caller_nid": "api_public_web_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L119"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L121"}, {"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": "L123"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L126"}, {"caller_nid": "api_public_web_login", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L128"}, {"caller_nid": "api_public_web_login", "callee": "verify_password", "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": "L130"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L133"}, {"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": "L135"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L137"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L138"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L139"}, {"caller_nid": "api_public_web_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L141"}, {"caller_nid": "api_public_web_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L146"}, {"caller_nid": "api_public_web_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L156"}, {"caller_nid": "api_public_web_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L157"}, {"caller_nid": "api_public_web_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L159"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L172"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L174"}, {"caller_nid": "api_public_refresh_token", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L177"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L178"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L179"}, {"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": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L182"}, {"caller_nid": "api_public_refresh_token", "callee": "is_session_valid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L184"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L185"}, {"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": "L186"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L187"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L189"}, {"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": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L193"}, {"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": "L195"}, {"caller_nid": "api_public_refresh_token", "callee": "revoke_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L197"}, {"caller_nid": "api_public_refresh_token", "callee": "extend_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L198"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L200"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L201"}, {"caller_nid": "api_public_refresh_token", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L203"}, {"caller_nid": "api_public_refresh_token", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L208"}, {"caller_nid": "api_public_refresh_token", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L218"}, {"caller_nid": "api_public_refresh_token", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L220"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L228"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L234"}, {"caller_nid": "api_public_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L235"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L236"}, {"caller_nid": "api_public_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L238"}, {"caller_nid": "api_public_logout", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L240"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L241"}, {"caller_nid": "api_public_logout", "callee": "revoke_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L243"}, {"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": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L247"}, {"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": "L255"}, {"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": "L257"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L269"}, {"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": "L271"}, {"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": "L273"}, {"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": "L274"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L277"}, {"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": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L279"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L280"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L281"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L285"}, {"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": "L287"}, {"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": "L288"}, {"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": "L289"}, {"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": "L291"}, {"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": "L293"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L293"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L305"}, {"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": "L307"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L309"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L309"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L309"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L310"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L310"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L310"}, {"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": "L312"}, {"caller_nid": "api_public_change_current_user_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L313"}, {"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": "L314"}, {"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": "L316"}, {"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": "L317"}, {"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": "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": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L321"}, {"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": "L338"}, {"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": "L341"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L343"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "splitext", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L343"}, {"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": "L345"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L347"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L348"}, {"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": "L349"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "read", "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": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L355"}, {"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": "L356"}, {"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": "L358"}, {"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": "L359"}, {"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": "L361"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L361"}, {"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": "L367"}, {"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": "L368"}, {"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": "L369"}, {"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": "L371"}, {"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": "L373"}, {"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": "L374"}, {"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": "L376"}, {"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": "L385"}, {"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": "L385"}, {"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": "L386"}, {"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": "L390"}, {"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": "L398"}]} \ No newline at end of file diff --git a/backend/app/graphify-out/cache/ast/e7266b0ddc693d2b161890f3150ed36f93215ccf3e81bff1b8e51e895d67704f.json b/backend/app/graphify-out/cache/ast/e7266b0ddc693d2b161890f3150ed36f93215ccf3e81bff1b8e51e895d67704f.json new file mode 100644 index 00000000..a9986751 --- /dev/null +++ b/backend/app/graphify-out/cache/ast/e7266b0ddc693d2b161890f3150ed36f93215ccf3e81bff1b8e51e895d67704f.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": "L39"}, {"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": "L48"}, {"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": "L66"}, {"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": "L88"}, {"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": "L96"}, {"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": "L107"}, {"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": "L114"}, {"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": "L172"}, {"id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L234"}, {"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": "L253"}, {"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": "L263"}, {"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": "L299"}, {"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": "L331"}, {"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": "L368"}, {"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_40", "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": "L40"}, {"id": "api_public_rationale_49", "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": "L49"}, {"id": "api_public_rationale_67", "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": "L67"}, {"id": "api_public_rationale_108", "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": "L108"}, {"id": "api_public_rationale_119", "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": "L119"}, {"id": "api_public_rationale_235", "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": "L235"}, {"id": "api_public_rationale_254", "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": "L254"}, {"id": "api_public_rationale_268", "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": "L268"}, {"id": "api_public_rationale_336", "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": "L336"}, {"id": "api_public_rationale_369", "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": "L369"}], "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": "L33", "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": "L34", "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": "L39", "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": "L48", "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": "L66", "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": "L88", "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": "L96", "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": "L107", "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": "L114", "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": "L172", "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": "L234", "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": "L253", "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": "L263", "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": "L299", "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": "L331", "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": "L368", "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": "L62", "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": "L144", "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": "L166", "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": "L206", "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": "L256", "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": "L257", "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": "L270", "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": "L291", "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": "L306", "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": "L338", "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_40", "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": "L40", "weight": 1.0}, {"source": "api_public_rationale_49", "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": "L49", "weight": 1.0}, {"source": "api_public_rationale_67", "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": "L67", "weight": 1.0}, {"source": "api_public_rationale_108", "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": "L108", "weight": 1.0}, {"source": "api_public_rationale_119", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L119", "weight": 1.0}, {"source": "api_public_rationale_235", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L235", "weight": 1.0}, {"source": "api_public_rationale_254", "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": "L254", "weight": 1.0}, {"source": "api_public_rationale_268", "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": "L268", "weight": 1.0}, {"source": "api_public_rationale_336", "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": "L336", "weight": 1.0}, {"source": "api_public_rationale_369", "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": "L369", "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": "L41"}, {"caller_nid": "api_public_avatar_url_field", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L44"}, {"caller_nid": "api_public_avatar_url_field", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L44"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L50"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L50"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L56"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L56"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L57"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L58"}, {"caller_nid": "api_public_build_user_info_payload", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L58"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L68"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L69"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L69"}, {"caller_nid": "api_public_build_current_user_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L71"}, {"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": "get", "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": "L74"}, {"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": "L83"}, {"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": "L89"}, {"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": "L90"}, {"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": "L91"}, {"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": "L92"}, {"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": "L93"}, {"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": "L109"}, {"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": "L110"}, {"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": "L110"}, {"caller_nid": "api_public_web_login", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L120"}, {"caller_nid": "api_public_web_login", "callee": "extract_login_credentials", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L121"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L123"}, {"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": "L125"}, {"caller_nid": "api_public_web_login", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L128"}, {"caller_nid": "api_public_web_login", "callee": "getattr", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L130"}, {"caller_nid": "api_public_web_login", "callee": "verify_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L131"}, {"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": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L135"}, {"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": "L137"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L139"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L140"}, {"caller_nid": "api_public_web_login", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L141"}, {"caller_nid": "api_public_web_login", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L143"}, {"caller_nid": "api_public_web_login", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L148"}, {"caller_nid": "api_public_web_login", "callee": "store_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L158"}, {"caller_nid": "api_public_web_login", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L159"}, {"caller_nid": "api_public_web_login", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L161"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L174"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L176"}, {"caller_nid": "api_public_refresh_token", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L179"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L180"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L181"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L183"}, {"caller_nid": "api_public_refresh_token", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L184"}, {"caller_nid": "api_public_refresh_token", "callee": "is_session_valid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L186"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L187"}, {"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": "L188"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L189"}, {"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": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L192"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L195"}, {"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": "L197"}, {"caller_nid": "api_public_refresh_token", "callee": "revoke_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L199"}, {"caller_nid": "api_public_refresh_token", "callee": "extend_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L200"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L202"}, {"caller_nid": "api_public_refresh_token", "callee": "generate_uuid", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L203"}, {"caller_nid": "api_public_refresh_token", "callee": "create_access_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L205"}, {"caller_nid": "api_public_refresh_token", "callee": "create_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L210"}, {"caller_nid": "api_public_refresh_token", "callee": "store_refresh_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L220"}, {"caller_nid": "api_public_refresh_token", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L222"}, {"caller_nid": "api_public_refresh_token", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L230"}, {"caller_nid": "api_public_logout", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L236"}, {"caller_nid": "api_public_logout", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L237"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L238"}, {"caller_nid": "api_public_logout", "callee": "replace", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L240"}, {"caller_nid": "api_public_logout", "callee": "decode_token", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L242"}, {"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": "revoke_session", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L245"}, {"caller_nid": "api_public_logout", "callee": "error_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L247"}, {"caller_nid": "api_public_logout", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L249"}, {"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": "L257"}, {"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": "L259"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L271"}, {"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": "L273"}, {"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": "L275"}, {"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": "L276"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L279"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L280"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L281"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L282"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "get", "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": "L287"}, {"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": "L289"}, {"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": "L290"}, {"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": "L291"}, {"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": "L293"}, {"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": "L295"}, {"caller_nid": "api_public_update_current_user_profile", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L295"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L307"}, {"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": "L309"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L311"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L311"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L311"}, {"caller_nid": "api_public_change_current_user_password", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L312"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L312"}, {"caller_nid": "api_public_change_current_user_password", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L312"}, {"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": "L314"}, {"caller_nid": "api_public_change_current_user_password", "callee": "len", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L315"}, {"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": "change_password", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L318"}, {"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": "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": "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": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L323"}, {"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": "L340"}, {"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": "L343"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L345"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "splitext", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L345"}, {"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": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L349"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L350"}, {"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": "L351"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "read", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L354"}, {"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": "L356"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "len", "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": "upload_file", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L360"}, {"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": "L361"}, {"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": "L362"}, {"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": "L364"}, {"caller_nid": "api_public_upload_current_user_avatar", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L364"}, {"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": "L370"}, {"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": "L371"}, {"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": "L372"}, {"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": "L374"}, {"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": "L376"}, {"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": "success_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": "iter_user_menu_perm_codes", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py", "source_location": "L388"}, {"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": "L388"}, {"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": "L389"}, {"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": "L393"}, {"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": "L401"}]} \ No newline at end of file diff --git a/backend/app/models/models.py b/backend/app/models/models.py index 2a8999e2..49453eff 100644 --- a/backend/app/models/models.py +++ b/backend/app/models/models.py @@ -824,7 +824,7 @@ class BizProtocolPayment(Base): pay_mode = Column(String(8), nullable=False, comment="dj趸交 fq分期") contract_amount = Column(Numeric(18, 2), nullable=True, comment="合同金额") installment_count = Column(Integer, nullable=True, comment="分期期数") - installment_interval_months = Column(Integer, nullable=True, comment="每期间隔(月)") + installment_interval_months = Column(Numeric(10, 2), nullable=True, comment="每期间隔(月)") lump_sum_deadline = Column(CHAR(8), nullable=True, comment="趸交截止时间YYYYMMDD") installment_start_date = Column(CHAR(8), nullable=True, comment="分期开始YYYYMMDD") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") diff --git a/backend/app/schemas/auth.py b/backend/app/schemas/auth.py index 46351ef9..367a0c58 100644 --- a/backend/app/schemas/auth.py +++ b/backend/app/schemas/auth.py @@ -1,5 +1,5 @@ """Pydantic schemas - 用户认证""" -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, ConfigDict from typing import Optional from datetime import datetime @@ -51,6 +51,17 @@ class ChangePasswordRequest(BaseModel): new_password: str = Field(..., min_length=6) +class ProfileUpdateRequest(BaseModel): + """当前用户个人信息更新(仅允许自助修改的字段)""" + model_config = ConfigDict(populate_by_name=True) + + phone_no: Optional[str] = Field(None, alias="phoneNo", max_length=11) + email: Optional[str] = Field(None, max_length=50) + sex: Optional[str] = Field(None, pattern=r"^[012]$") + remark: Optional[str] = Field(None, max_length=512) + avatar: Optional[str] = Field(None, alias="avatarUrl", max_length=512) + + class ResetPasswordRequest(BaseModel): """重置密码请求(运营操作)""" user_id: int diff --git a/backend/app/services/protocol_pay_mode_switch.py b/backend/app/services/protocol_pay_mode_switch.py new file mode 100644 index 00000000..0e725136 --- /dev/null +++ b/backend/app/services/protocol_pay_mode_switch.py @@ -0,0 +1,84 @@ +"""缴费模式切换校验(与前端 protocol-pay-mode-switch.ts 规则一致)""" + +from __future__ import annotations + +from decimal import Decimal +from typing import Any, Dict, Optional + +LOCKED_STATUSES = frozenset({"jfqrz", "yjf", "tfqrz", "ytf"}) +BLOCKING_STATUSES = frozenset({"jfqrz", "tfqrz", "ytf"}) + + +def _dec(v: Any) -> float: + if v is None: + return 0.0 + return float(Decimal(str(v))) + + +def validate_payment_details_for_save( + pay_mode: str, + contract_amount: Optional[Any], + installment_count: Optional[int], + details: Optional[list], +) -> None: + """保存缴费明细前的 P0 校验。""" + rows = [dict(d) for d in (details or [])] + contract = _dec(contract_amount) + + for r in rows: + status = (r.get("pay_status") or r.get("payStatus") or "dfj").strip() + if status in BLOCKING_STATUSES: + raise ValueError("存在缴费确认中或退费处理中的明细,无法保存") + + paid_sum = sum( + _dec(r.get("due_amount") if r.get("due_amount") is not None else r.get("dueAmount")) + for r in rows + if (r.get("pay_status") or r.get("payStatus")) == "yjf" + ) + dfj_rows = [ + r + for r in rows + if (r.get("pay_status") or r.get("payStatus") or "dfj") == "dfj" + ] + yjf_rows = [r for r in rows if (r.get("pay_status") or r.get("payStatus")) == "yjf"] + + if pay_mode == "dj": + if len(dfj_rows) > 1: + raise ValueError("趸交模式仅允许一条待缴费明细") + remaining = round(contract - paid_sum, 2) + if dfj_rows: + due = _dec( + dfj_rows[0].get("due_amount") + if dfj_rows[0].get("due_amount") is not None + else dfj_rows[0].get("dueAmount") + ) + expected = remaining if yjf_rows else contract + if abs(due - expected) > 0.015: + raise ValueError( + f"趸交待缴金额应为 {expected:.2f},当前为 {due:.2f}" + ) + + elif pay_mode == "fq": + count = int(installment_count or 0) + if count < 1: + raise ValueError("分期模式须填写分期期数") + if len(rows) != count: + raise ValueError(f"分期明细条数应等于分期期数({count})") + fq_forbidden = frozenset({"jfqrz", "tfqrz", "ytf"}) + for r in rows: + status = (r.get("pay_status") or r.get("payStatus") or "dfj").strip() + if status in fq_forbidden: + raise ValueError("分期模式下存在不可保存的缴费状态") + total_due = sum( + _dec(r.get("due_amount") if r.get("due_amount") is not None else r.get("dueAmount")) + for r in rows + ) + if contract and abs(total_due - contract) > 0.015: + raise ValueError("分期各期应缴金额之和应等于合同金额") + if yjf_rows: + max_paid_no = max( + int(r.get("installment_no") or r.get("installmentNo") or 0) + for r in yjf_rows + ) + if max_paid_no > count: + raise ValueError("分期期数不能少于已缴费的最大期次") diff --git a/backend/app/services/protocol_payment_installment.py b/backend/app/services/protocol_payment_installment.py new file mode 100644 index 00000000..c3039e7d --- /dev/null +++ b/backend/app/services/protocol_payment_installment.py @@ -0,0 +1,73 @@ +"""分期缴费:应缴日计算(整数月按日历递增,小数月按 30 天/月换算)""" + +from __future__ import annotations + +import calendar +from decimal import Decimal, ROUND_DOWN +from typing import Union + +Number = Union[int, float, Decimal, str] + +DAYS_PER_MONTH = 30 +FQ_ADVANCE_DAYS = 10 + + +def add_days_yyyymmdd(date_str: str, days: int) -> str: + raw = (date_str or "").strip().replace("-", "") + if len(raw) != 8: + return "" + from datetime import date, timedelta + + y = int(raw[0:4]) + m = int(raw[4:6]) + d = int(raw[6:8]) + dt = date(y, m, d) + timedelta(days=days) + return f"{dt.year:04d}{dt.month:02d}{dt.day:02d}" + + +def add_months_yyyymmdd(date_str: str, months: int) -> str: + raw = (date_str or "").strip().replace("-", "") + if len(raw) != 8: + return "" + y = int(raw[0:4]) + m = int(raw[4:6]) + d = int(raw[6:8]) + month_index = m - 1 + months + ny = y + month_index // 12 + nm = month_index % 12 + 1 + last_day = calendar.monthrange(ny, nm)[1] + nd = min(d, last_day) + return f"{ny:04d}{nm:02d}{nd:02d}" + + +def add_interval_months_yyyymmdd(date_str: str, total_months: Number) -> str: + """整数部分按日历加月,小数部分按 30 天/月换算为天数。""" + raw = (date_str or "").strip().replace("-", "") + if len(raw) != 8: + return "" + total = Decimal(str(total_months)) + if total == 0: + return raw + whole = int(total.to_integral_value(rounding=ROUND_DOWN)) + frac = total - Decimal(whole) + result = raw + if whole: + result = add_months_yyyymmdd(result, whole) + if frac: + days = int(round(float(frac) * DAYS_PER_MONTH)) + if days: + result = add_days_yyyymmdd(result, days) + return result + + +def calc_fq_installment_due_date( + start_date: str, + index: int, + interval_months: Number, +) -> str: + """第 1 期=开始时间;第 2 期起在间隔递增基础上提前 10 天。""" + total_months = Decimal(str(index)) * Decimal(str(interval_months)) + base = add_interval_months_yyyymmdd(start_date, total_months) + if index >= 1: + return add_days_yyyymmdd(base, -FQ_ADVANCE_DAYS) + return base diff --git a/backend/graphify-out/.graphify_analysis.json b/backend/graphify-out/.graphify_analysis.json index 068b4339..9e5e67cd 100644 --- a/backend/graphify-out/.graphify_analysis.json +++ b/backend/graphify-out/.graphify_analysis.json @@ -2,7 +2,6 @@ "communities": { "0": [ "api_admin_attachment_download_url", - "api_admin_attachmentdownloadurlbody", "api_admin_create_dept", "api_admin_create_dict_data", "api_admin_create_dict_type", @@ -25,22 +24,12 @@ "api_admin_delete_site", "api_admin_delete_tenant", "api_admin_delete_user", - "api_admin_deptcreatebody", - "api_admin_deptupdatebody", "api_admin_dict_data_options", - "api_admin_dictdatacreatebody", - "api_admin_dictdataupdatebody", - "api_admin_dicttypecreatebody", - "api_admin_dicttypeupdatebody", - "api_admin_expresscompanycreatebody", - "api_admin_expresscompanyupdatebody", "api_admin_format_file_size", "api_admin_get_role_data_scope", "api_admin_get_role_menus", "api_admin_get_tenant_no", "api_admin_get_user_by_id", - "api_admin_itemunitcreatebody", - "api_admin_itemunitupdatebody", "api_admin_list_depts", "api_admin_list_dict_data", "api_admin_list_dict_types", @@ -56,25 +45,8 @@ "api_admin_list_tenants", "api_admin_list_users", "api_admin_list_users_for_select", - "api_admin_menucreatebody", - "api_admin_menuupdatebody", - "api_admin_postcreatebody", - "api_admin_postupdatebody", - "api_admin_postusersupdatebody", "api_admin_py", - "api_admin_rationale_1537", - "api_admin_rationale_45", - "api_admin_rationale_77", - "api_admin_rationale_92", "api_admin_reset_user_password", - "api_admin_rolecreatebody", - "api_admin_roledatascopebody", - "api_admin_rolemenubody", - "api_admin_roleupdatebody", - "api_admin_sitecreatebody", - "api_admin_siteupdatebody", - "api_admin_tenantcreatebody", - "api_admin_tenantupdatebody", "api_admin_update_dept", "api_admin_update_dict_data", "api_admin_update_dict_type", @@ -90,8 +62,6 @@ "api_admin_update_tenant", "api_admin_update_user", "api_admin_upload_attachment", - "api_admin_usercreatebody", - "api_admin_userupdatebody", "api_basic_info_batch_generate_protocol_nos", "api_basic_info_batch_generate_sample_codes", "api_basic_info_batch_issue_protocol_nos", @@ -112,10 +82,8 @@ "api_basic_info_delete_sample_code", "api_basic_info_get_tenant_no", "api_basic_info_list_cell_sample_types", - "api_basic_info_list_collection_regions", "api_basic_info_list_customers", "api_basic_info_list_hospitals", - "api_basic_info_list_protocol_nos", "api_basic_info_list_sample_codes", "api_basic_info_update_cell_sample_type", "api_basic_info_update_collection_region", @@ -163,29 +131,6 @@ "api_collection_protocol_submit_collection_protocol_audit", "api_collection_protocol_update_collection_protocol", "api_collection_protocol_update_fullmoon_todo_insurance", - "api_insurance_company_create_insurance_company", - "api_insurance_company_create_insurance_company_invoice", - "api_insurance_company_create_insurance_project_price", - "api_insurance_company_delete_insurance_company", - "api_insurance_company_delete_insurance_company_invoice", - "api_insurance_company_delete_insurance_project_price", - "api_insurance_company_fmt_dt", - "api_insurance_company_generate_uuid", - "api_insurance_company_get_tenant_no", - "api_insurance_company_list_insurance_companies", - "api_insurance_company_list_insurance_company_invoices", - "api_insurance_company_list_insurance_project_prices", - "api_insurance_company_py", - "api_insurance_company_row_to_dict_company", - "api_insurance_company_row_to_dict_invoice", - "api_insurance_company_row_to_dict_project_price", - "api_insurance_company_soft_delete_insurance_company", - "api_insurance_company_soft_delete_insurance_company_invoice", - "api_insurance_company_soft_delete_insurance_project_price", - "api_insurance_company_total_pages", - "api_insurance_company_update_insurance_company", - "api_insurance_company_update_insurance_company_invoice", - "api_insurance_company_update_insurance_project_price", "api_leave_create_leave", "api_leave_delete_leave", "api_leave_get_leave", @@ -205,16 +150,37 @@ "api_material_stock_in_material", "api_material_stock_out_material", "api_material_update_material", + "api_operations_batch_create_storage_slots", "api_operations_clear_storage_slots", + "api_operations_create_access_log", "api_operations_create_clean_room", "api_operations_create_exhibition_appointment", "api_operations_create_occupancy", "api_operations_create_storage_facility", + "api_operations_create_storage_slot", + "api_operations_delete_access_log", + "api_operations_delete_clean_room", "api_operations_delete_exhibition_appointment", + "api_operations_delete_storage_facility", + "api_operations_delete_storage_slot", + "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_normalize_visit_date_bound", + "api_operations_parse_optional_dt", + "api_operations_py", "api_operations_remove_occupancy", + "api_operations_update_access_log", "api_operations_update_clean_room", "api_operations_update_exhibition_appointment", "api_operations_update_storage_facility", + "api_operations_update_storage_slot", "api_outbound_release_review_batch_review", "api_outbound_release_review_get_current_user_id", "api_outbound_release_review_get_outbound_release_materials", @@ -228,6 +194,7 @@ "api_pilot_application_api_complete_application", "api_pilot_application_api_create_application", "api_pilot_application_api_create_outbound_production", + "api_pilot_application_api_create_outbound_qc", "api_pilot_application_api_create_plan", "api_pilot_application_api_create_schedule", "api_pilot_application_api_delete_application", @@ -263,14 +230,8 @@ "api_pilot_checkup_get_tenant_no", "api_pilot_checkup_py", "api_pilot_delivery_create_delivery", - "api_pilot_delivery_get_by_schedule", - "api_pilot_delivery_get_method", - "api_pilot_delivery_get_tenant_no", - "api_pilot_delivery_list_by_application", - "api_pilot_delivery_list_materials", "api_pilot_delivery_save_materials", "api_pilot_delivery_save_method", - "api_pilot_delivery_soft_delete", "api_pilot_infusion_confirm_api_confirm", "api_pilot_infusion_confirm_api_create", "api_pilot_infusion_confirm_api_delete", @@ -472,7 +433,7 @@ "api_protocol_sample_collection_list_protocol_sample_collections", "api_protocol_sample_collection_page_payload", "api_protocol_sample_collection_py", - "api_public_get_current_user_profile", + "api_public_change_current_user_password", "api_qc_batch_stock_in_qc_material", "api_qc_batch_stock_out_qc_material", "api_qc_complete_qc_task", @@ -597,47 +558,51 @@ "core_response_success_response", "core_utils_parse_datetime", "crud_base_crudbase_get", + "crud_clinical_payment_apply_submit_receipt", + "crud_clinical_payment_auto_create_payment", + "crud_clinical_payment_batch_submit_receipt", + "crud_clinical_payment_batch_submit_refund", + "crud_clinical_payment_confirm_receipt", + "crud_clinical_payment_confirm_refund", + "crud_clinical_payment_enrich_payment", + "crud_clinical_payment_get_or_raise", + "crud_clinical_payment_get_payment_by_schedule", + "crud_clinical_payment_get_payment_detail", "crud_clinical_payment_list_payments", + "crud_clinical_payment_map_payments_by_schedule_id", + "crud_clinical_payment_map_payments_by_schedule_ids", + "crud_clinical_payment_py", "crud_clinical_payment_row_to_dict", - "crud_collection_protocol_apply_submit_receipt_finance", + "crud_clinical_payment_submit_receipt", + "crud_clinical_payment_submit_refund", "crud_collection_protocol_apply_submit_refund_finance", - "crud_collection_protocol_batch_submit_receipt_finance", "crud_collection_protocol_batch_submit_refund_finance", - "crud_collection_protocol_get_payment_detail_or_raise", - "crud_collection_protocol_no_enrich_issued_user_names", - "crud_collection_protocol_submit_receipt_finance", "crud_collection_protocol_submit_refund_finance", - "crud_collection_region_region_to_dict", - "crud_dept_build_tree", - "crud_dept_collect_with_ancestors", - "crud_dept_list_depts_tree", - "crud_dept_rationale_41", + "crud_consumable_stock_log_deduct_for_step", + "crud_consumable_stock_log_rationale_164", + "crud_consumable_stock_log_rationale_216", + "crud_consumable_stock_log_revert_step_stock_changes", "crud_exhibition_appointment_total_pages", "crud_leave_update_leave_status", "crud_menu_build_tree", "crud_menu_list_menus_tree", "crud_pilot_checkup_get_checkup_by_application", - "crud_pilot_delivery_save_delivery_materials", - "crud_pilot_delivery_save_delivery_method", "crud_pilot_service_enrich_finance_operate_fields", "crud_pilot_service_normalize_txn_product_item", - "crud_pilot_service_row_to_dict_cell_product_price", - "crud_pilot_service_row_to_dict_cell_product_spec", "crud_pilot_service_row_to_dict_cell_product_type", "crud_pilot_service_row_to_dict_channel_agreement", - "crud_pilot_service_row_to_dict_channel_agreement_price", - "crud_pilot_service_row_to_dict_channel_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", - "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_pilot_service_service_order_txn_to_response_dict", + "crud_post_get_post", + "crud_post_soft_delete_post", "crud_process_route_update_step", "crud_production_task_production_conclusion_label", + "crud_production_task_replace_step_consumables", + "crud_production_task_replace_step_reagents", "crud_production_task_task_to_dict", "crud_production_task_update_task_step", "crud_qc_material_batch_stock_in", @@ -648,17 +613,46 @@ "crud_qc_material_stock_in", "crud_qc_material_stock_out", "crud_qc_task_update_task_attachments", + "crud_qc_third_party_item_create_item", + "crud_qc_third_party_item_item_code_exists", + "crud_qc_third_party_item_update_item", "crud_research_donation_change_status", - "crud_workflow_get_all_tasks_for_business", - "models_models_bizattachment", - "models_models_sysdept", - "models_models_sysrole", "schemas_order_adjust_adjuststatus", "schemas_order_adjust_adjusttype", "schemas_order_adjust_py", "str" ], "1": [ + "api_admin_attachmentdownloadurlbody", + "api_admin_deptcreatebody", + "api_admin_deptupdatebody", + "api_admin_dictdatacreatebody", + "api_admin_dictdataupdatebody", + "api_admin_dicttypecreatebody", + "api_admin_dicttypeupdatebody", + "api_admin_expresscompanycreatebody", + "api_admin_expresscompanyupdatebody", + "api_admin_itemunitcreatebody", + "api_admin_itemunitupdatebody", + "api_admin_menucreatebody", + "api_admin_menuupdatebody", + "api_admin_postcreatebody", + "api_admin_postupdatebody", + "api_admin_postusersupdatebody", + "api_admin_rationale_1537", + "api_admin_rationale_45", + "api_admin_rationale_77", + "api_admin_rationale_92", + "api_admin_rolecreatebody", + "api_admin_roledatascopebody", + "api_admin_rolemenubody", + "api_admin_roleupdatebody", + "api_admin_sitecreatebody", + "api_admin_siteupdatebody", + "api_admin_tenantcreatebody", + "api_admin_tenantupdatebody", + "api_admin_usercreatebody", + "api_admin_userupdatebody", "api_basic_info_cellsampletypecreatebody", "api_basic_info_cellsampletypeupdatebody", "api_basic_info_collectionregioncreatebody", @@ -688,12 +682,6 @@ "api_clinical_payment_paymentidbody", "api_clinical_payment_submitreceiptbody", "api_clinical_payment_submitrefundbody", - "api_insurance_company_insurancecompanycreatebody", - "api_insurance_company_insurancecompanyinvoicecreatebody", - "api_insurance_company_insurancecompanyinvoiceupdatebody", - "api_insurance_company_insurancecompanyupdatebody", - "api_insurance_company_insuranceprojectpricecreatebody", - "api_insurance_company_insuranceprojectpriceupdatebody", "api_material_batchstockinbody", "api_material_batchstockinitem", "api_material_batchstockoutbody", @@ -703,6 +691,21 @@ "api_material_py", "api_material_stockinbody", "api_material_stockoutbody", + "api_operations_accesslogcreatebody", + "api_operations_accesslogupdatebody", + "api_operations_cleanroomcreatebody", + "api_operations_cleanroomupdatebody", + "api_operations_exhibitionappointmentcreatebody", + "api_operations_exhibitionappointmentupdatebody", + "api_operations_occupancycreatebody", + "api_operations_rationale_1", + "api_operations_storagefacilitycreatebody", + "api_operations_storagefacilityupdatebody", + "api_operations_storageslotbatchcreatebody", + "api_operations_storageslotclearbody", + "api_operations_storageslotcreatebody", + "api_operations_storageslotinsertrowbody", + "api_operations_storageslotupdatebody", "api_pilot_application_applicationcreatebody", "api_pilot_application_applicationsavebody", "api_pilot_application_applicationupdatebody", @@ -734,8 +737,6 @@ "api_pilot_delivery_deliverymethodsavebody", "api_pilot_delivery_deliverysavebody", "api_pilot_delivery_idbody", - "api_pilot_delivery_py", - "api_pilot_delivery_rationale_1", "api_pilot_infusion_confirm_confirmcreatebody", "api_pilot_infusion_confirm_confirmupdatebody", "api_pilot_infusion_confirm_idbody", @@ -788,7 +789,6 @@ "api_pilot_service_txnrefundbody", "api_pilot_service_txnunsubscribebody", "api_pilot_service_txnupdatebody", - "api_public_rationale_216", "api_qc_batchstockinbody", "api_qc_batchstockinitem", "api_qc_batchstockoutbody", @@ -825,18 +825,54 @@ "api_sample_sms_notification_togglestatusbody", "api_storage_entry_sms_notification_togglestatusbody", "basemodel", + "core_data_scope_rationale_1", + "core_data_scope_rationale_113", + "core_data_scope_rationale_28", + "core_data_scope_rationale_38", + "core_data_scope_rationale_65", "core_response_config", "core_response_pageresult", "core_response_py", "core_response_responsemodel", + "crud_clean_room_rationale_1", "crud_collection_protocol_no_batch_generate_protocol_nos", "crud_collection_protocol_no_rationale_256", - "crud_collection_protocol_no_rationale_34", "crud_sample_code_batch_generate_sample_codes", "crud_sample_code_rationale_261", + "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_165", + "crud_storage_facility_rationale_41", + "crud_storage_facility_rationale_63", + "crud_storage_facility_rationale_79", + "crud_storage_facility_row_to_dict", + "crud_storage_facility_slot_to_dict", + "crud_storage_facility_soft_delete_facility", + "crud_storage_facility_soft_delete_slot", + "crud_storage_facility_update_facility", + "crud_storage_facility_update_slot", + "models_models_bizattachment", + "models_models_bizcleanroom", + "models_models_bizcleanroomaccesslog", "models_models_bizcollectionprotocolno", "models_models_bizcustomer", + "models_models_bizexhibitionappointment", "models_models_bizsamplecode", + "models_models_bizstoragefacility", + "models_models_bizstoragefacilityslot", + "models_models_sysdept", + "models_models_sysrole", "models_models_sysuser", "schemas_attachment_attachmentuploadresponse", "schemas_attachment_py", @@ -1013,7 +1049,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", @@ -1043,18 +1078,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", @@ -1160,93 +1183,161 @@ "schemas_workflow_versionresponse" ], "2": [ - "api_insurance_company_rationale_1", - "api_workflow_processdefcreatebody", - "api_workflow_processdefupdatebody", - "api_workflow_publishversionbody", - "api_workflow_rationale_135", - "api_workflow_startinstancebody", - "api_workflow_taskactionbody", + "api_collection_protocol_auditcreatebody", + "api_collection_protocol_batchdetailidsbody", + "api_collection_protocol_batchrefundfinancesubmitbody", + "api_collection_protocol_financeconfirmbody", + "api_collection_protocol_fullmoontodoinsurancebody", + "api_collection_protocol_protocolcreatebody", + "api_collection_protocol_protocolupdatebody", + "api_collection_protocol_rationale_1", + "api_collection_protocol_rationale_68", + "api_collection_protocol_refundfinanceconfirmbody", + "api_collection_protocol_refundfinancesubmitbody", "base", - "crud_api_request_log_apirequestlogcrud", - "crud_consumable_pack_rationale_1", - "crud_consumable_rationale_1", - "crud_consumable_stock_log_rationale_1", - "crud_consumable_stock_log_rationale_164", - "crud_consumable_stock_log_rationale_216", - "crud_dict_type_rationale_1", - "crud_material_batch_stock_in", - "crud_material_batch_stock_out", - "crud_material_rationale_328", - "crud_material_rationale_475", + "crud_cell_product_rationale_1", + "crud_cell_product_rationale_38", + "crud_cell_product_rationale_538", + "crud_cell_product_rationale_549", + "crud_cell_product_rationale_617", + "crud_cell_product_rationale_750", + "crud_cell_product_rationale_998", + "crud_clinical_payment_rationale_137", + "crud_clinical_payment_rationale_166", + "crud_clinical_payment_rationale_74", + "crud_collection_protocol_rationale_1", + "crud_collection_protocol_rationale_128", + "crud_collection_protocol_rationale_1356", + "crud_collection_protocol_rationale_182", + "crud_collection_protocol_rationale_1880", + "crud_collection_protocol_rationale_201", + "crud_collection_protocol_rationale_212", + "crud_collection_protocol_rationale_223", + "crud_collection_protocol_rationale_2256", + "crud_collection_protocol_rationale_2834", + "crud_collection_protocol_rationale_287", + "crud_collection_protocol_rationale_562", + "crud_collection_protocol_rationale_58", + "crud_collection_protocol_rationale_609", + "crud_collection_protocol_rationale_92", + "crud_outbound_handover_inventory_rationale_1", + "crud_outbound_handover_inventory_rationale_158", + "crud_outbound_handover_inventory_rationale_231", + "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_127", + "crud_outbound_release_review_rationale_468", + "crud_outbound_release_review_rationale_558", + "crud_outbound_release_review_rationale_69", + "crud_outbound_release_review_rationale_82", + "crud_pilot_application_rationale_1", + "crud_pilot_application_rationale_1427", + "crud_pilot_application_rationale_69", + "crud_pilot_application_rationale_99", "crud_pilot_checkup_ensure_checkup_for_patient", "crud_pilot_checkup_rationale_1", "crud_pilot_checkup_rationale_715", "crud_pilot_checkup_rationale_883", "crud_pilot_checkup_rationale_927", - "crud_pilot_delivery_deduct_fee_on_delivery", "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_apply_gmcp_order_quotas", - "crud_pilot_service_confirm_receipt", - "crud_pilot_service_confirm_refund", - "crud_pilot_service_confirm_txn", - "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_get_or_create_channel_account", - "crud_pilot_service_get_service_order", - "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_service_reduce_channel_product_quota", - "crud_pilot_service_resolve_agreement_price_cell_type", - "crud_pilot_service_submit_finance_confirm", - "crud_pilot_service_submit_refund", - "crud_pilot_service_upsert_channel_product_quota", - "crud_pilot_service_void_service_order", - "crud_qc_material_usage_rationale_155", - "crud_qc_material_usage_rationale_177", - "crud_qc_material_usage_rationale_18", - "crud_qc_material_usage_rationale_227", - "crud_qc_material_usage_rationale_40", - "crud_reagent_stock_log_deduct_for_step", - "crud_reagent_stock_log_rationale_1", - "crud_reagent_stock_log_rationale_164", - "crud_reagent_stock_log_rationale_216", - "crud_role_rationale_1", - "crud_workflow_publish_version", - "crud_workflow_rationale_1", + "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", + "crud_process_route_rationale_455", + "crud_production_task_rationale_1", + "crud_production_task_rationale_1498", + "crud_production_task_rationale_1537", + "crud_production_task_rationale_1721", + "crud_production_task_rationale_1846", + "crud_production_task_rationale_353", + "crud_production_task_rationale_362", + "crud_production_task_rationale_94", + "crud_production_task_rationale_990", + "crud_production_work_order_rationale_130", + "crud_production_work_order_rationale_233", + "crud_production_work_order_rationale_297", + "crud_production_work_order_rationale_327", + "crud_production_work_order_rationale_378", + "crud_production_work_order_rationale_394", + "crud_production_work_order_rationale_618", + "crud_production_work_order_rationale_677", + "crud_production_work_order_rationale_725", + "crud_production_work_order_rationale_776", + "crud_production_work_order_rationale_802", + "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_sample_collection_rationale_1", + "crud_qc_sms_notification_rationale_32", + "crud_qc_task_rationale_504", + "crud_qc_task_result_rationale_43", + "crud_qc_task_result_rationale_96", + "crud_qc_work_order_rationale_1045", + "crud_qc_work_order_rationale_1100", + "crud_qc_work_order_rationale_1203", + "crud_qc_work_order_rationale_1490", + "crud_qc_work_order_rationale_1531", + "crud_qc_work_order_rationale_1811", + "crud_qc_work_order_rationale_189", + "crud_qc_work_order_rationale_2056", + "crud_qc_work_order_rationale_279", + "crud_qc_work_order_rationale_339", + "crud_qc_work_order_rationale_348", + "crud_qc_work_order_rationale_391", + "crud_qc_work_order_rationale_628", + "crud_qc_work_order_rationale_73", + "crud_qc_work_order_rationale_926", + "crud_research_donation_convert_from_storage", + "crud_research_donation_convert_to_storage", + "crud_research_donation_merge_comma_separated_urls", + "crud_research_donation_rationale_1", + "crud_research_donation_rationale_105", + "crud_research_donation_rationale_1066", + "crud_research_donation_rationale_121", + "crud_research_donation_rationale_1451", + "crud_research_donation_rationale_1796", + "crud_research_donation_rationale_750", + "crud_research_donation_rationale_821", + "crud_research_donation_rationale_94", + "crud_research_donation_sample_collection_rationale_1", + "crud_sample_reception_check_result_rationale_108", + "crud_sample_reception_check_result_rationale_133", + "crud_sample_reception_check_result_rationale_171", + "crud_sample_reception_rationale_1091", + "crud_sample_reception_rationale_1135", + "crud_sample_reception_rationale_116", + "crud_sample_reception_rationale_1174", + "crud_sample_reception_rationale_1201", + "crud_sample_reception_rationale_1225", + "crud_sample_reception_rationale_1250", + "crud_sample_reception_rationale_1271", + "crud_sample_reception_rationale_1295", + "crud_sample_reception_rationale_150", + "crud_sample_reception_rationale_194", + "crud_sample_reception_rationale_270", + "crud_sample_reception_rationale_35", + "crud_sample_reception_rationale_82", + "crud_sample_reception_rationale_957", + "crud_storage_entry_sms_notification_rationale_185", + "crud_storage_release_review_rationale_724", "models_clinical_payment_bizpilotpayment", "models_clinical_payment_py", "models_clinical_payment_rationale_8", @@ -1254,33 +1345,15 @@ "models_material_bizmaterialstocklog", "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_bizcellsampletype", + "models_models_bizcollectionhospital", + "models_models_bizcollectionprotocol", + "models_models_bizcollectionregion", "models_models_bizconsumable", "models_models_bizconsumablepack", "models_models_bizconsumablepackitem", - "models_models_bizconsumablestocklog", - "models_models_bizinsurancecompany", - "models_models_bizinsurancecompanyinvoice", - "models_models_bizinsuranceprojectprice", + "models_models_bizexpresscompany", "models_models_bizitemunit", "models_models_bizleaverequest", "models_models_bizoutboundhandover", @@ -1290,6 +1363,7 @@ "models_models_bizoutboundreleaseqcmaterial", "models_models_bizoutboundreleasereview", "models_models_bizoutputtype", + "models_models_bizpilotapplication", "models_models_bizpilotcheckup", "models_models_bizpilotcheckupactualitem", "models_models_bizpilotcheckupreserveitem", @@ -1297,15 +1371,58 @@ "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", + "models_models_bizprocessdatacollection", + "models_models_bizprocessoutput", + "models_models_bizprocessreagent", + "models_models_bizprocessroute", + "models_models_bizprocessroutestep", + "models_models_bizprocessroutestepconsumable", + "models_models_bizprocessroutestepdatacollection", + "models_models_bizprocessroutestepoutput", + "models_models_bizprocessroutestepreagent", + "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_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_bizqcsmsnotification", + "models_models_bizqctask", "models_models_bizqcthirdpartycompany", + "models_models_bizqcthirdpartyitem", + "models_models_bizqcworkorder", + "models_models_bizqcworkorderlabitem", + "models_models_bizqcworkorderthirditem", "models_models_bizreagent", "models_models_bizreagentstocklog", + "models_models_bizsamplereception", "models_models_bizsamplereceptioncheckitem", + "models_models_bizsamplereceptioncheckresult", "models_models_bizsamplesmsnotification", "models_models_bizsopdocument", "models_models_bizstorageentrysmsnotification", + "models_models_bizstoragereleasereview", + "models_models_bizstorageslotoccupancy", "models_models_py", "models_models_rationale_1", "models_models_rationale_1021", @@ -1432,11 +1549,7 @@ "models_models_sysuserpost", "models_models_sysuserrole", "models_models_userrole", - "models_models_wfnode", - "models_models_wfprocessdef", "models_models_wfprocessinstance", - "models_models_wfprocessversion", - "models_models_wftask", "models_models_wftransition", "models_qc_material_bizqcmaterial", "models_qc_material_bizqcmaterialusage", @@ -1444,57 +1557,288 @@ "models_qc_param_bizqcitemparam", "models_qc_param_bizqctaskresult", "models_qc_param_py", + "models_research_donation_bizprotocoldonationconvert", + "models_research_donation_bizresearchdonation", + "models_research_donation_bizresearchdonationaudit", + "models_research_donation_bizresearchdonationcollection", + "models_research_donation_bizresearchdonationparty", + "models_research_donation_bizresearchdonationsample", + "models_research_donation_bizresearchdonationsampletransport", + "models_research_donation_py", + "models_research_donation_rationale_10", + "models_research_donation_rationale_104", + "models_research_donation_rationale_128", + "models_research_donation_rationale_157", + "models_research_donation_rationale_185", + "models_research_donation_rationale_43", + "models_research_donation_rationale_64", "services_web_auth_roles_rationale_1", "services_web_auth_roles_rationale_14", "services_web_auth_roles_rationale_26", - "services_web_auth_roles_rationale_54", - "services_workflow_engine_rationale_1", - "services_workflow_engine_workflowengine", - "services_workflow_engine_workflowengine_init" + "services_web_auth_roles_rationale_54" ], "3": [ + "api_basic_info_list_collection_regions", + "api_basic_info_list_protocol_nos", + "api_collection_protocol_ensure_customer_for_mother", + "api_collection_protocol_persist_protocol_sub_resources", + "api_ethnic_list_ethnics_for_select", + "api_ethnic_py", + "core_data_scope_apply_data_scope", + "core_data_scope_get_child_dept_ids", + "core_data_scope_get_user_dept_id", + "core_data_scope_py", + "core_data_scope_resolve_user_role_scopes", + "core_utils_format_date", + "core_utils_format_datetime", + "core_utils_generate_random_password", + "core_utils_get_current_time", + "core_utils_get_file_size_display", + "core_utils_optional_date", + "core_utils_parse_date", + "core_utils_py", + "core_utils_rationale_71", + "crud_api_request_log_apirequestlogcrud", + "crud_api_request_log_delete", + "crud_api_request_log_get", + "crud_api_request_log_get_multi_with_filters", + "crud_api_request_log_py", + "crud_base_crudbase_count", + "crud_collection_protocol_add_months_yyyymmdd", + "crud_collection_protocol_align_fq_payment_details_payload", + "crud_collection_protocol_apply_payment_detail_list_filters", + "crud_collection_protocol_apply_submit_receipt_finance", + "crud_collection_protocol_attachments_to_urls", + "crud_collection_protocol_audit_to_dict", + "crud_collection_protocol_batch_submit_receipt_finance", + "crud_collection_protocol_calc_installment_due_amounts", + "crud_collection_protocol_classify_installment_warning", + "crud_collection_protocol_collection_info_to_dict", + "crud_collection_protocol_confirm_receipt", + "crud_collection_protocol_confirm_refund", + "crud_collection_protocol_create_audit", + "crud_collection_protocol_dec", + "crud_collection_protocol_detail_query_with_protocol", + "crud_collection_protocol_detail_to_dict", + "crud_collection_protocol_fmt_dt", + "crud_collection_protocol_format_newborn_info", + "crud_collection_protocol_format_storage_cert_sample_info", + "crud_collection_protocol_fullmoon_todo_detail_dict", + "crud_collection_protocol_fullmoon_todo_empty_dict", + "crud_collection_protocol_fullmoon_todo_to_dict", + "crud_collection_protocol_get_collection_info", + "crud_collection_protocol_get_collection_protocol", + "crud_collection_protocol_get_fullmoon_todo", + "crud_collection_protocol_get_party_customer", + "crud_collection_protocol_get_payment_by_protocol_id", + "crud_collection_protocol_get_payment_detail_or_raise", + "crud_collection_protocol_get_protocol_detail_bundle", + "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", + "crud_collection_protocol_get_storage_cert", + "crud_collection_protocol_list_audits", + "crud_collection_protocol_list_collection_protocols", + "crud_collection_protocol_list_installment_warning", + "crud_collection_protocol_list_payment_details", + "crud_collection_protocol_list_payment_details_page", + "crud_collection_protocol_list_receipt_confirm_details", + "crud_collection_protocol_list_receipt_confirmed_details", + "crud_collection_protocol_list_refund_confirm_details", + "crud_collection_protocol_list_refund_confirmed_details", + "crud_collection_protocol_list_sample_transports", + "crud_collection_protocol_list_samples", + "crud_collection_protocol_list_storage_certs", + "crud_collection_protocol_load_protocol_storage_in_date_map", + "crud_collection_protocol_load_sample_type_name_map", + "crud_collection_protocol_lookup_attachment_by_url", + "crud_collection_protocol_migrate_sample_child_refs_on_replace", + "crud_collection_protocol_no_enrich_issued_user_names", + "crud_collection_protocol_no_rationale_34", + "crud_collection_protocol_normalize_attachment_url_key", + "crud_collection_protocol_normalize_date_bound", + "crud_collection_protocol_normalize_fields", + "crud_collection_protocol_normalize_yyyymmdd_date", + "crud_collection_protocol_optional_decimal", + "crud_collection_protocol_party_customer_map_by_protocol_ids", + "crud_collection_protocol_party_customer_to_dict", + "crud_collection_protocol_payment_to_dict", + "crud_collection_protocol_pick_storage_in_date", + "crud_collection_protocol_pop_attachment_urls", + "crud_collection_protocol_protocol_to_dict", + "crud_collection_protocol_py", + "crud_collection_protocol_rows_to_payment_detail_dicts", + "crud_collection_protocol_sample_to_dict", + "crud_collection_protocol_save_payment_details", + "crud_collection_protocol_save_sample_transports", + "crud_collection_protocol_save_samples", + "crud_collection_protocol_soft_delete_collection_protocol", + "crud_collection_protocol_soft_delete_transports_for_protocol", + "crud_collection_protocol_storage_cert_to_dict", + "crud_collection_protocol_storage_in_date_to_yyyymmdd", + "crud_collection_protocol_submit_receipt_finance", + "crud_collection_protocol_today_yyyymmdd", + "crud_collection_protocol_total_pages", + "crud_collection_protocol_transport_to_dict", + "crud_collection_protocol_update_collection_protocol", + "crud_collection_protocol_upsert_collection_info", + "crud_collection_protocol_upsert_fullmoon_todo", + "crud_collection_protocol_upsert_party_customer", + "crud_collection_protocol_upsert_payment", + "crud_collection_protocol_upsert_storage_cert", + "crud_collection_protocol_user_nick_name_map", + "crud_collection_protocol_validate_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_hospital_to_dict", + "crud_collection_region_list_collection_regions", + "crud_collection_region_list_hospitals", + "crud_collection_region_py", + "crud_collection_region_rationale_29", + "crud_collection_region_region_to_dict", + "crud_collection_region_soft_delete_collection_region", + "crud_collection_region_soft_delete_hospital", + "crud_collection_region_total_pages", + "crud_collection_region_update_collection_region", + "crud_collection_region_update_hospital", + "crud_customer_create_customer", + "crud_customer_get_customer", + "crud_customer_id_card_taken", + "crud_customer_list_customers", + "crud_customer_normalize_date_bound", + "crud_customer_py", + "crud_customer_rationale_1", + "crud_customer_row_to_dict", + "crud_customer_soft_delete_customer", + "crud_customer_total_pages", + "crud_customer_update_customer", + "crud_ethnic_list_ethnics", + "crud_ethnic_py", + "crud_ethnic_rationale_1", + "crud_ethnic_row_to_dict", + "crud_leave_create_leave", + "crud_leave_get_leave", + "crud_leave_list_leaves", + "crud_leave_py", + "crud_leave_row_to_dict", + "crud_leave_soft_delete_leave", + "crud_leave_total_pages", + "crud_leave_update_leave", + "crud_material_stock_log_dec", + "crud_material_stock_log_fmt_dt", + "crud_material_stock_log_list_stock_logs", + "crud_material_stock_log_py", + "crud_material_stock_log_row_to_dict", + "crud_material_stock_log_user_nick_name_map", + "crud_pilot_service_list_cell_product_types", + "crud_pilot_service_list_channel_agreements", + "crud_pilot_service_list_channel_mail_addresses", + "crud_pilot_service_list_checkup_institution_projects", + "crud_pilot_service_list_project_systems", + "crud_protocol_sample_collection_apply_sample_status_filter", + "crud_protocol_sample_collection_base_query", + "crud_protocol_sample_collection_fmt_dt", + "crud_protocol_sample_collection_list_protocol_sample_collections", + "crud_protocol_sample_collection_py", + "crud_protocol_sample_collection_row_to_dict", + "crud_protocol_sample_collection_sample_status_label", + "crud_protocol_sample_collection_total_pages", + "crud_qc_lab_test_item_create_lab_item", + "crud_qc_lab_test_item_get_lab_item", + "crud_qc_lab_test_item_item_code_exists", + "crud_qc_lab_test_item_list_active_lab_items", + "crud_qc_lab_test_item_list_lab_items", + "crud_qc_lab_test_item_py", + "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_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_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_total_pages", + "crud_qc_material_update_material", + "crud_qc_sms_notification_apply_qc_status_filter", + "crud_qc_sms_notification_base_query", + "crud_qc_sms_notification_derive_qc_conclusion", + "crud_qc_sms_notification_ensure_notification", + "crud_qc_sms_notification_eq_ci", + "crud_qc_sms_notification_fetch_completed_tasks", + "crud_qc_sms_notification_fmt_dt", + "crud_qc_sms_notification_generate_sms_content", + "crud_qc_sms_notification_list_notifications", + "crud_qc_sms_notification_normalize_date_bound", + "crud_qc_sms_notification_py", + "crud_qc_sms_notification_qc_complete_time", + "crud_qc_sms_notification_qc_status_label", + "crud_qc_sms_notification_resolve_notification", + "crud_qc_sms_notification_row_to_dict", + "crud_qc_sms_notification_task_stats_subquery", + "crud_qc_sms_notification_toggle_notification_status", + "crud_qc_sms_notification_total_pages", + "crud_qc_sms_notification_unicode_ci", + "crud_qc_third_party_item_company_name_map", + "crud_qc_third_party_item_dec", + "crud_qc_third_party_item_get_item", + "crud_qc_third_party_item_list_active_items", + "crud_qc_third_party_item_list_items", + "crud_qc_third_party_item_py", + "crud_qc_third_party_item_row_to_dict", + "crud_qc_third_party_item_soft_delete_item", + "crud_research_donation_sample_collection_apply_sample_status_filter", + "crud_research_donation_sample_collection_base_query", + "crud_research_donation_sample_collection_fmt_dt", + "crud_research_donation_sample_collection_list_donation_sample_collections", + "crud_research_donation_sample_collection_py", + "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_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", + "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "services_protocol_payment_installment_add_months_yyyymmdd", + "services_protocol_payment_installment_calc_fq_installment_due_date", + "services_protocol_payment_installment_py", + "services_protocol_payment_installment_rationale_1", + "services_protocol_payment_installment_rationale_44", + "services_protocol_payment_installment_rationale_68" + ], + "4": [ "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_row_to_dict", - "crud_consumable_soft_delete_consumable", - "crud_consumable_stock_in", - "crud_consumable_stock_log_deduct_for_step", - "crud_consumable_stock_log_display_remark", - "crud_consumable_stock_log_list_stock_logs", - "crud_consumable_stock_log_parse_receiver_purpose_from_remark", - "crud_consumable_stock_log_py", - "crud_consumable_stock_log_resolve_receiver_purpose", - "crud_consumable_stock_log_revert_step_stock_changes", - "crud_consumable_stock_log_row_to_dict", - "crud_consumable_stock_log_user_nick_name_map", - "crud_consumable_stock_out", - "crud_consumable_total_pages", - "crud_consumable_update_consumable", - "crud_material_code_exists", - "crud_material_create_material", - "crud_material_dec", - "crud_material_fmt_dt", - "crud_material_get_material", - "crud_material_list_materials", - "crud_material_options_list", - "crud_material_py", - "crud_material_row_to_dict", - "crud_material_soft_delete_material", - "crud_material_stock_in", - "crud_material_stock_out", - "crud_material_update_material", + "crud_pilot_delivery_deduct_fee_on_delivery", + "crud_pilot_delivery_rationale_175", "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", @@ -1508,6 +1852,9 @@ "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", @@ -1523,6 +1870,10 @@ "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_txn_products_from_order", "crud_pilot_service_get_cell_product_price", "crud_pilot_service_get_cell_product_spec", @@ -1533,32 +1884,78 @@ "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_channel_agreement_prices", + "crud_pilot_service_list_channel_invoices", "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_institutions", "crud_pilot_service_list_package_items_raw", + "crud_pilot_service_list_project_system_items", "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_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_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_project_system_item", "crud_pilot_service_row_to_dict_service_order_product", "crud_pilot_service_save_gmcp_product_rows", "crud_pilot_service_soft_delete_cell_product_price", @@ -1576,6 +1973,8 @@ "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", @@ -1595,539 +1994,42 @@ "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_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", - "crud_production_task_add_task_step", - "crud_production_task_clone_route_to_task", - "crud_production_task_clone_step_consumables", - "crud_production_task_clone_step_data_collections", - "crud_production_task_clone_step_outputs", - "crud_production_task_clone_step_reagents", - "crud_production_task_consume_task_input_cell_products", - "crud_production_task_create_production_task", - "crud_production_task_delete_production_task", - "crud_production_task_delete_task_step", - "crud_production_task_enrich_outbound_task_items", - "crud_production_task_fmt_dt", - "crud_production_task_generate_task_no", - "crud_production_task_get_production_task_detail", - "crud_production_task_normalize_date_bound", - "crud_production_task_py", - "crud_production_task_reorder_task_steps", - "crud_production_task_replace_step_consumables", - "crud_production_task_replace_step_data_collections", - "crud_production_task_replace_step_outputs", - "crud_production_task_replace_step_reagents", - "crud_production_task_resolve_sub_table_order_num", - "crud_production_task_set_task_inputs", - "crud_production_task_soft_delete_sub", - "crud_production_task_step_consumable_to_dict", - "crud_production_task_step_data_collection_to_dict", - "crud_production_task_step_output_to_dict", - "crud_production_task_step_reagent_to_dict", - "crud_production_task_step_sub_tables_to_dict", - "crud_production_task_step_to_dict", - "crud_production_task_task_input_to_dict", - "crud_production_task_task_output_to_dict", - "crud_production_task_total_pages", - "crud_production_task_update_production_task", - "crud_production_task_update_task_status", - "crud_production_work_order_sync_production_work_order_status_from_tasks", - "crud_reagent_batch_stock_in", - "crud_reagent_batch_stock_out", - "crud_reagent_create_reagent", - "crud_reagent_dec", - "crud_reagent_get_reagent", - "crud_reagent_is_enabled_status", - "crud_reagent_list_reagents", - "crud_reagent_norm_status", - "crud_reagent_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" - ], - "4": [ - "api_collection_protocol_auditcreatebody", - "api_collection_protocol_batchdetailidsbody", - "api_collection_protocol_batchrefundfinancesubmitbody", - "api_collection_protocol_financeconfirmbody", - "api_collection_protocol_fullmoontodoinsurancebody", - "api_collection_protocol_protocolcreatebody", - "api_collection_protocol_protocolupdatebody", - "api_collection_protocol_rationale_1", - "api_collection_protocol_rationale_68", - "api_collection_protocol_refundfinanceconfirmbody", - "api_collection_protocol_refundfinancesubmitbody", - "crud_cell_product_rationale_1", - "crud_cell_product_rationale_38", - "crud_cell_product_rationale_538", - "crud_cell_product_rationale_549", - "crud_cell_product_rationale_617", - "crud_cell_product_rationale_750", - "crud_cell_product_rationale_998", - "crud_clinical_payment_rationale_137", - "crud_clinical_payment_rationale_166", - "crud_clinical_payment_rationale_74", - "crud_collection_protocol_rationale_1", - "crud_collection_protocol_rationale_127", - "crud_collection_protocol_rationale_1355", - "crud_collection_protocol_rationale_181", - "crud_collection_protocol_rationale_1879", - "crud_collection_protocol_rationale_200", - "crud_collection_protocol_rationale_211", - "crud_collection_protocol_rationale_222", - "crud_collection_protocol_rationale_2255", - "crud_collection_protocol_rationale_2830", - "crud_collection_protocol_rationale_286", - "crud_collection_protocol_rationale_561", - "crud_collection_protocol_rationale_57", - "crud_collection_protocol_rationale_608", - "crud_collection_protocol_rationale_91", - "crud_collection_region_rationale_29", - "crud_outbound_release_review_rationale_127", - "crud_outbound_release_review_rationale_468", - "crud_outbound_release_review_rationale_558", - "crud_outbound_release_review_rationale_69", - "crud_outbound_release_review_rationale_82", - "crud_pilot_application_rationale_1", - "crud_pilot_application_rationale_1427", - "crud_pilot_application_rationale_69", - "crud_pilot_application_rationale_99", - "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", - "crud_process_route_rationale_455", - "crud_production_task_copy_task_step", - "crud_production_task_parse_optional_date", - "crud_production_task_rationale_1", - "crud_production_task_rationale_1498", - "crud_production_task_rationale_1537", - "crud_production_task_rationale_1721", - "crud_production_task_rationale_1846", - "crud_production_task_rationale_353", - "crud_production_task_rationale_362", - "crud_production_task_rationale_94", - "crud_production_task_rationale_990", - "crud_production_task_set_task_outputs", - "crud_production_task_update_product_from_output", - "crud_production_work_order_create_production_work_order_from_reception", - "crud_production_work_order_rationale_130", - "crud_production_work_order_rationale_233", - "crud_production_work_order_rationale_297", - "crud_production_work_order_rationale_327", - "crud_production_work_order_rationale_378", - "crud_production_work_order_rationale_394", - "crud_production_work_order_rationale_618", - "crud_production_work_order_rationale_677", - "crud_production_work_order_rationale_725", - "crud_production_work_order_rationale_776", - "crud_production_work_order_rationale_802", - "crud_protocol_donation_convert_active_link_query", - "crud_protocol_donation_convert_create_convert_link", - "crud_protocol_donation_convert_get_convert_partner", - "crud_protocol_donation_convert_get_partner_sample_codes", - "crud_protocol_donation_convert_has_active_convert_link", - "crud_protocol_donation_convert_py", - "crud_protocol_donation_convert_rationale_1", - "crud_protocol_donation_convert_rationale_132", - "crud_protocol_donation_convert_rationale_198", - "crud_protocol_donation_convert_rationale_273", - "crud_protocol_donation_convert_rationale_35", - "crud_protocol_donation_convert_rationale_84", - "crud_protocol_donation_convert_upsert_convert_link_for_to_storage", - "crud_protocol_sample_collection_rationale_1", - "crud_qc_sms_notification_rationale_32", - "crud_qc_task_create_task_for_line", - "crud_qc_task_rationale_504", - "crud_qc_task_result_rationale_43", - "crud_qc_task_result_rationale_96", - "crud_qc_work_order_configure_temp_qc_work_order", - "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_get_task_by_source_line_id", - "crud_qc_work_order_rationale_1045", - "crud_qc_work_order_rationale_1100", - "crud_qc_work_order_rationale_1203", - "crud_qc_work_order_rationale_1490", - "crud_qc_work_order_rationale_1531", - "crud_qc_work_order_rationale_1811", - "crud_qc_work_order_rationale_189", - "crud_qc_work_order_rationale_2056", - "crud_qc_work_order_rationale_279", - "crud_qc_work_order_rationale_339", - "crud_qc_work_order_rationale_348", - "crud_qc_work_order_rationale_391", - "crud_qc_work_order_rationale_628", - "crud_qc_work_order_rationale_73", - "crud_qc_work_order_rationale_926", - "crud_qc_work_order_soft_delete_tasks_by_source_line_ids", - "crud_qc_work_order_sync_work_order_lab_items", - "crud_qc_work_order_sync_work_order_third_party_items", - "crud_research_donation_convert_from_storage", - "crud_research_donation_convert_to_storage", - "crud_research_donation_merge_comma_separated_urls", - "crud_research_donation_rationale_1", - "crud_research_donation_rationale_105", - "crud_research_donation_rationale_1066", - "crud_research_donation_rationale_121", - "crud_research_donation_rationale_1451", - "crud_research_donation_rationale_1796", - "crud_research_donation_rationale_750", - "crud_research_donation_rationale_821", - "crud_research_donation_rationale_94", - "crud_research_donation_sample_collection_rationale_1", - "crud_research_donation_submit_audit", - "crud_sample_reception_check_result_rationale_108", - "crud_sample_reception_check_result_rationale_133", - "crud_sample_reception_check_result_rationale_171", - "crud_sample_reception_rationale_1091", - "crud_sample_reception_rationale_1135", - "crud_sample_reception_rationale_116", - "crud_sample_reception_rationale_1174", - "crud_sample_reception_rationale_1201", - "crud_sample_reception_rationale_1225", - "crud_sample_reception_rationale_1250", - "crud_sample_reception_rationale_1271", - "crud_sample_reception_rationale_1295", - "crud_sample_reception_rationale_150", - "crud_sample_reception_rationale_194", - "crud_sample_reception_rationale_270", - "crud_sample_reception_rationale_35", - "crud_sample_reception_rationale_82", - "crud_sample_reception_rationale_957", - "crud_storage_entry_sms_notification_rationale_185", - "crud_storage_release_review_rationale_724", - "models_models_bizcellproduct", - "models_models_bizcellsampletype", - "models_models_bizcollectionhospital", - "models_models_bizcollectionprotocol", - "models_models_bizcollectionregion", - "models_models_bizexpresscompany", - "models_models_bizpilotapplication", - "models_models_bizpilotinfusionplan", - "models_models_bizpilotinfusionschedule", - "models_models_bizpilotinfusionscheduleproduct", - "models_models_bizpilotpatient", - "models_models_bizprocess", - "models_models_bizprocessconsumable", - "models_models_bizprocessdatacollection", - "models_models_bizprocessoutput", - "models_models_bizprocessreagent", - "models_models_bizprocessroute", - "models_models_bizprocessroutestep", - "models_models_bizprocessroutestepconsumable", - "models_models_bizprocessroutestepdatacollection", - "models_models_bizprocessroutestepoutput", - "models_models_bizprocessroutestepreagent", - "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_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_bizsamplereception", - "models_models_bizsamplereceptioncheckresult", - "models_models_bizstoragereleasereview", - "models_research_donation_bizprotocoldonationconvert", - "models_research_donation_bizresearchdonation", - "models_research_donation_bizresearchdonationaudit", - "models_research_donation_bizresearchdonationcollection", - "models_research_donation_bizresearchdonationparty", - "models_research_donation_bizresearchdonationsample", - "models_research_donation_bizresearchdonationsampletransport", - "models_research_donation_py", - "models_research_donation_rationale_10", - "models_research_donation_rationale_104", - "models_research_donation_rationale_128", - "models_research_donation_rationale_157", - "models_research_donation_rationale_185", - "models_research_donation_rationale_43", - "models_research_donation_rationale_64" + "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" ], "5": [ - "api_workflow_get_designer_data", - "crud_api_request_log_delete", - "crud_api_request_log_get", - "crud_api_request_log_get_multi_with_filters", - "crud_api_request_log_py", - "crud_base_crudbase_count", - "crud_cell_sample_type_create_cell_sample_type", - "crud_cell_sample_type_get_cell_sample_type", - "crud_cell_sample_type_list_cell_sample_types", - "crud_cell_sample_type_py", - "crud_cell_sample_type_rationale_1", - "crud_cell_sample_type_row_to_dict", - "crud_cell_sample_type_soft_delete_cell_sample_type", - "crud_cell_sample_type_total_pages", - "crud_cell_sample_type_type_code_exists", - "crud_cell_sample_type_update_cell_sample_type", - "crud_collection_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_hospital_to_dict", - "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_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_row_to_dict", - "crud_consumable_pack_soft_delete_consumable_pack", - "crud_consumable_pack_total_pages", - "crud_consumable_pack_update_consumable_pack", - "crud_dict_data_create_dict_data", - "crud_dict_data_get_dict_data", - "crud_dict_data_list_dict_data", - "crud_dict_data_list_dict_data_options", - "crud_dict_data_py", - "crud_dict_data_rationale_1", - "crud_dict_data_row_to_dict", - "crud_dict_data_soft_delete_dict_data", - "crud_dict_data_total_pages", - "crud_dict_data_update_dict_data", - "crud_express_company_create_express_company", - "crud_express_company_express_code_exists", - "crud_express_company_get_express_company", - "crud_express_company_list_express_companies", - "crud_express_company_py", - "crud_express_company_rationale_1", - "crud_express_company_row_to_dict", - "crud_express_company_soft_delete_express_company", - "crud_express_company_total_pages", - "crud_express_company_update_express_company", - "crud_item_unit_create_item_unit", - "crud_item_unit_get_item_unit", - "crud_item_unit_list_item_units", - "crud_item_unit_py", - "crud_item_unit_rationale_1", - "crud_item_unit_row_to_dict", - "crud_item_unit_soft_delete_item_unit", - "crud_item_unit_total_pages", - "crud_item_unit_unit_code_exists", - "crud_item_unit_update_item_unit", - "crud_material_stock_log_dec", - "crud_material_stock_log_fmt_dt", - "crud_material_stock_log_list_stock_logs", - "crud_material_stock_log_py", - "crud_material_stock_log_row_to_dict", - "crud_material_stock_log_user_nick_name_map", - "crud_output_type_create_output_type", - "crud_output_type_get_output_type", - "crud_output_type_list_output_types", - "crud_output_type_py", - "crud_output_type_rationale_1", - "crud_output_type_row_to_dict", - "crud_output_type_soft_delete_output_type", - "crud_output_type_total_pages", - "crud_output_type_type_code_exists", - "crud_output_type_update_output_type", - "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_checkup_institutions", - "crud_pilot_service_list_project_systems", - "crud_post_create_post", - "crud_post_get_post", - "crud_post_list_posts", - "crud_post_post_code_exists", - "crud_post_py", - "crud_post_row_to_dict", - "crud_post_soft_delete_post", - "crud_post_total_pages", - "crud_post_update_post", - "crud_process_category_category_code_exists", - "crud_process_category_create_process_category", - "crud_process_category_get_process_category", - "crud_process_category_list_process_categories", - "crud_process_category_py", - "crud_process_category_rationale_1", - "crud_process_category_row_to_dict", - "crud_process_category_soft_delete_process_category", - "crud_process_category_total_pages", - "crud_process_category_update_process_category", - "crud_qc_task_result_list_results_by_task", - "crud_qc_task_result_list_saved_results_by_task", - "crud_qc_task_result_merge_saved_into_template", - "crud_qc_task_result_py", - "crud_qc_task_result_resolve_task_item_ref", - "crud_qc_task_result_row_to_dict", - "crud_qc_task_result_save_results_for_task", - "crud_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_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_site_create_site", - "crud_site_get_site", - "crud_site_list_sites", - "crud_site_py", - "crud_site_row_to_dict", - "crud_site_site_code_exists", - "crud_site_soft_delete_site", - "crud_site_total_pages", - "crud_site_update_site", - "crud_sop_document_create_sop_document", - "crud_sop_document_get_sop_document", - "crud_sop_document_list_sop_documents", - "crud_sop_document_py", - "crud_sop_document_rationale_1", - "crud_sop_document_row_to_dict", - "crud_sop_document_soft_delete_sop_document", - "crud_sop_document_sop_code_exists", - "crud_sop_document_total_pages", - "crud_sop_document_update_sop_document", - "crud_tenant_create_tenant", - "crud_tenant_get_tenant", - "crud_tenant_list_tenants", - "crud_tenant_py", - "crud_tenant_row_to_dict", - "crud_tenant_soft_delete_tenant", - "crud_tenant_tenant_no_exists", - "crud_tenant_total_pages", - "crud_tenant_update_tenant", - "crud_workflow_create_instance", - "crud_workflow_create_process_def", - "crud_workflow_get_instance", - "crud_workflow_get_latest_version", - "crud_workflow_get_nodes_by_version", - "crud_workflow_get_pending_tasks_by_node", - "crud_workflow_get_process_def", - "crud_workflow_get_task", - "crud_workflow_get_transitions_by_version", - "crud_workflow_list_completed_tasks", - "crud_workflow_list_my_instances", - "crud_workflow_list_pending_tasks", - "crud_workflow_list_process_defs", - "crud_workflow_list_versions", - "crud_workflow_process_code_exists", - "crud_workflow_py", - "crud_workflow_row_to_dict", - "crud_workflow_soft_delete_process_def", - "crud_workflow_task_row_to_dict", - "crud_workflow_total_pages", - "crud_workflow_update_instance_status", - "crud_workflow_update_process_def", - "crud_workflow_version_to_dict", - "services_workflow_callback_dispatch_local", - "services_workflow_callback_py", - "services_workflow_callback_rationale_1", - "services_workflow_callback_rationale_24", - "services_workflow_callback_rationale_29", - "services_workflow_callback_rationale_61", - "services_workflow_callback_register_local_callback", - "services_workflow_callback_trigger_callback", - "services_workflow_engine_compare", - "services_workflow_engine_get_variable", - "services_workflow_engine_parse_node_config", - "services_workflow_engine_parse_variables", - "services_workflow_engine_py", - "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_reject_task", - "services_workflow_engine_workflowengine_start_process" - ], - "6": [ - "api_pilot_application_api_create_outbound_qc", "crud_collection_protocol_format_attachment_file_size", "crud_collection_protocol_urls_to_attachment_list", - "crud_outbound_release_review_batch_review", - "crud_outbound_release_review_fmt_dt", - "crud_outbound_release_review_get_schedule_detail", - "crud_outbound_release_review_get_user_name", - "crud_outbound_release_review_list_reviews_paginated", - "crud_outbound_release_review_py", - "crud_outbound_release_review_resolve_schedule_biz_type", - "crud_outbound_release_review_review_schedule", - "crud_outbound_release_review_row_to_dict", - "crud_outbound_release_review_total_pages", - "crud_pilot_service_list_channels", - "crud_pilot_service_row_to_dict_channel", "crud_production_task_list_production_tasks", "crud_qc_task_apply_task_result", "crud_qc_task_complete_task", "crud_qc_task_conclusion_label", "crud_qc_task_create_qc_task_manual", + "crud_qc_task_create_task_for_line", "crud_qc_task_dec", "crud_qc_task_delete_qc_task", "crud_qc_task_enrich_tasks_reception_fields", @@ -2143,10 +2045,23 @@ "crud_qc_task_task_row_to_dict", "crud_qc_task_task_to_dict", "crud_qc_task_task_work_order_context", + "crud_qc_third_party_company_company_code_exists", + "crud_qc_third_party_company_create_company", + "crud_qc_third_party_company_get_company", + "crud_qc_third_party_company_list_companies", + "crud_qc_third_party_company_list_company_options", + "crud_qc_third_party_company_py", + "crud_qc_third_party_company_row_to_dict", + "crud_qc_third_party_company_soft_delete_company", + "crud_qc_third_party_company_update_company", "crud_qc_work_order_accept_conclusion_label", "crud_qc_work_order_build_outbound_pilot_context_by_schedule", + "crud_qc_work_order_configure_temp_qc_work_order", "crud_qc_work_order_configure_work_order", "crud_qc_work_order_create_outbound_qc_work_order", + "crud_qc_work_order_create_qc_work_order_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", @@ -2157,8 +2072,10 @@ "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", "crud_qc_work_order_get_temp_qc_work_order", "crud_qc_work_order_get_temp_qc_work_order_detail", "crud_qc_work_order_get_work_order", @@ -2175,6 +2092,9 @@ "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "crud_qc_work_order_sample_type_name_for_item", "crud_qc_work_order_sample_type_name_for_reception", + "crud_qc_work_order_soft_delete_tasks_by_source_line_ids", + "crud_qc_work_order_sync_work_order_lab_items", + "crud_qc_work_order_sync_work_order_third_party_items", "crud_qc_work_order_temp_lab_lines", "crud_qc_work_order_temp_tasks", "crud_qc_work_order_temp_third_lines", @@ -2284,87 +2204,211 @@ "crud_storage_release_review_submit_review", "crud_storage_release_review_total_pages" ], + "6": [ + "api_public_avatar_url_field", + "api_public_build_current_user_payload", + "api_public_build_user_info_payload", + "api_public_get_current_user_profile", + "api_public_get_web_auth_menu_codes", + "api_public_jwt_user_payload", + "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_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", + "core_auth_extend_session", + "core_auth_get_client_ip", + "core_auth_get_current_user", + "core_auth_get_current_user_by_token", + "core_auth_get_current_user_simple", + "core_auth_get_redis_client", + "core_auth_is_refresh_token_valid", + "core_auth_is_session_valid", + "core_auth_py", + "core_auth_rationale_107", + "core_auth_rationale_190", + "core_auth_rationale_76", + "core_auth_redis_session_enabled", + "core_auth_refresh_key", + "core_auth_revoke_refresh_token", + "core_auth_revoke_session", + "core_auth_session_key", + "core_auth_store_refresh_token", + "core_auth_store_session", + "core_avatar_url_extract_avatar_storage_key", + "core_avatar_url_py", + "core_avatar_url_rationale_1", + "core_avatar_url_rationale_28", + "core_avatar_url_rationale_9", + "core_avatar_url_resolve_avatar_display_url", + "core_login_crypto_decrypt_login_payload", + "core_login_crypto_ensure_initialized", + "core_login_crypto_extract_login_credentials", + "core_login_crypto_get_public_pem", + "core_login_crypto_py", + "core_login_crypto_rationale_1", + "core_login_crypto_rationale_63", + "core_login_crypto_rationale_84", + "core_login_crypto_validate_ts", + "core_menu_guard_get_user_menu_codes", + "core_menu_guard_py", + "core_menu_guard_rationale_1", + "core_menu_guard_rationale_16", + "core_menu_guard_rationale_24", + "core_menu_guard_rationale_29", + "core_menu_guard_rationale_48", + "core_menu_guard_require_admin_or_super_admin", + "core_menu_guard_require_any_menu_code", + "core_menu_guard_require_menu_code", + "core_security_get_password_hash", + "core_security_py", + "core_security_rationale_5", + "core_security_verify_password", + "core_storage_qiniustorage_delete_file", + "core_utils_generate_id", + "crud_base_camel_to_snake", + "crud_base_crudbase", + "crud_base_crudbase_create", + "crud_base_crudbase_delete", + "crud_base_crudbase_get_all", + "crud_base_crudbase_get_multi", + "crud_base_crudbase_hard_delete", + "crud_base_crudbase_init", + "crud_base_get_model_attr", + "crud_base_historycrud", + "crud_base_historycrud_create_history", + "crud_base_py", + "crud_role_update_role_menus", + "crud_user_change_password", + "crud_user_create_user", + "crud_user_get_user", + "crud_user_get_user_with_relations", + "crud_user_hash_password", + "crud_user_list_post_ids_for_user", + "crud_user_list_user_ids_bound_to_post", + "crud_user_list_users", + "crud_user_py", + "crud_user_rationale_1", + "crud_user_rationale_134", + "crud_user_rationale_181", + "crud_user_replace_associations", + "crud_user_reset_password", + "crud_user_row_to_dict", + "crud_user_set_user_post_ids_only", + "crud_user_soft_delete_user", + "crud_user_sync_post_user_bindings", + "crud_user_total_pages", + "crud_user_update_user", + "crud_user_user_no_exists", + "crud_user_usercrudcompat", + "crud_user_usercrudcompat_get_by_user_no", + "schemas_auth_profileupdaterequest", + "schemas_auth_rationale_55", + "services_web_auth_roles_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" + ], "7": [ - "api_pilot_application_api_save_application", - "core_db_collation_eq_unicode", - "core_db_collation_like_unicode", - "core_db_collation_py", - "core_db_collation_rationale_1", - "core_db_collation_rationale_12", - "core_db_collation_rationale_7", - "core_db_collation_unicode_ci", - "crud_clinical_payment_apply_submit_receipt", - "crud_clinical_payment_auto_create_payment", - "crud_clinical_payment_batch_submit_receipt", - "crud_clinical_payment_batch_submit_refund", - "crud_clinical_payment_confirm_receipt", - "crud_clinical_payment_confirm_refund", - "crud_clinical_payment_enrich_payment", - "crud_clinical_payment_get_or_raise", - "crud_clinical_payment_get_payment_by_schedule", - "crud_clinical_payment_get_payment_detail", - "crud_clinical_payment_map_payments_by_schedule_id", - "crud_clinical_payment_map_payments_by_schedule_ids", - "crud_clinical_payment_py", - "crud_clinical_payment_submit_receipt", - "crud_clinical_payment_submit_refund", + "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_inventory_apply_handover_inventory", + "crud_outbound_handover_inventory_get_cell_product_locked", + "crud_outbound_handover_inventory_handover_usage_remark", + "crud_outbound_handover_inventory_handover_usage_remark_prefix", + "crud_outbound_handover_inventory_py", + "crud_outbound_handover_inventory_remove_cell_occupancy_no_commit", + "crud_outbound_handover_inventory_restore_cell_occupancy_no_commit", + "crud_outbound_handover_inventory_revert_handover_inventory", "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_pilot_application_auto_generate_schedules", - "crud_pilot_application_complete_application", - "crud_pilot_application_create_application", - "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_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_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_outbound_release_review_batch_review", + "crud_outbound_release_review_fmt_dt", + "crud_outbound_release_review_get_schedule_detail", + "crud_outbound_release_review_get_user_name", + "crud_outbound_release_review_list_reviews_paginated", + "crud_outbound_release_review_py", + "crud_outbound_release_review_resolve_schedule_biz_type", + "crud_outbound_release_review_review_schedule", + "crud_outbound_release_review_row_to_dict", + "crud_outbound_release_review_total_pages", + "crud_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_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", @@ -2393,209 +2437,27 @@ "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_accept_conclusion_label", - "crud_production_work_order_attach_outbound_detail", - "crud_production_work_order_attach_reception_detail", - "crud_production_work_order_complete_production_work_order", - "crud_production_work_order_configure_temp_production_work_order", - "crud_production_work_order_create_outbound_production_work_order", - "crud_production_work_order_create_production_work_order_manual", - "crud_production_work_order_create_temp_production_work_order", - "crud_production_work_order_delete_production_work_order", - "crud_production_work_order_delete_temp_production_work_order", - "crud_production_work_order_enrich_outbound_items", - "crud_production_work_order_enrich_wo_items", - "crud_production_work_order_fmt_dt", - "crud_production_work_order_generate_outbound_work_order_no", - "crud_production_work_order_generate_temp_work_order_no", - "crud_production_work_order_generate_work_order_no", - "crud_production_work_order_get_production_info_map_for_samples", - "crud_production_work_order_get_production_work_order", - "crud_production_work_order_get_temp_production_work_order", - "crud_production_work_order_get_temp_production_work_order_detail", - "crud_production_work_order_list_production_work_orders", - "crud_production_work_order_list_temp_production_work_orders", - "crud_production_work_order_normalize_date_bound", - "crud_production_work_order_outbound_work_order_ids_by_keyword", - "crud_production_work_order_production_info_item", - "crud_production_work_order_production_task_info", - "crud_production_work_order_py", - "crud_production_work_order_reception_source_label", - "crud_production_work_order_soft_delete_sub", - "crud_production_work_order_sync_temp_production_work_order_status", - "crud_production_work_order_temp_wo_to_dict", - "crud_production_work_order_update_production_work_order", - "crud_production_work_order_wo_to_dict", - "crud_production_work_order_wo_to_response_dict", - "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword" + "crud_qc_item_param_list_params_by_item", + "crud_qc_item_param_py", + "crud_qc_item_param_row_to_dict", + "crud_qc_item_param_save_params_for_item", + "crud_role_create_role", + "crud_role_get_role", + "crud_role_get_role_data_scope", + "crud_role_get_role_menu_ids", + "crud_role_list_roles", + "crud_role_py", + "crud_role_rationale_1", + "crud_role_role_name_exists", + "crud_role_row_to_dict", + "crud_role_soft_delete_role", + "crud_role_total_pages", + "crud_role_update_role", + "crud_role_update_role_data_scope" ], "8": [ - "api_collection_protocol_persist_protocol_sub_resources", - "api_ethnic_list_ethnics_for_select", - "api_ethnic_py", - "core_data_scope_apply_data_scope", - "core_data_scope_get_child_dept_ids", - "core_data_scope_get_user_dept_id", - "core_data_scope_py", - "core_data_scope_rationale_1", - "core_data_scope_rationale_113", - "core_data_scope_rationale_28", - "core_data_scope_rationale_38", - "core_data_scope_rationale_65", - "core_data_scope_resolve_user_role_scopes", - "core_utils_format_date", - "core_utils_format_datetime", - "core_utils_generate_random_password", - "core_utils_get_current_time", - "core_utils_get_file_size_display", - "core_utils_optional_date", - "core_utils_parse_date", - "core_utils_py", - "core_utils_rationale_71", - "crud_collection_protocol_add_months_yyyymmdd", - "crud_collection_protocol_align_fq_payment_details_payload", - "crud_collection_protocol_apply_payment_detail_list_filters", - "crud_collection_protocol_attachments_to_urls", - "crud_collection_protocol_audit_to_dict", - "crud_collection_protocol_calc_installment_due_amounts", - "crud_collection_protocol_classify_installment_warning", - "crud_collection_protocol_collection_info_to_dict", - "crud_collection_protocol_confirm_receipt", - "crud_collection_protocol_confirm_refund", - "crud_collection_protocol_create_audit", - "crud_collection_protocol_dec", - "crud_collection_protocol_detail_query_with_protocol", - "crud_collection_protocol_detail_to_dict", - "crud_collection_protocol_fmt_dt", - "crud_collection_protocol_format_newborn_info", - "crud_collection_protocol_format_storage_cert_sample_info", - "crud_collection_protocol_fullmoon_todo_detail_dict", - "crud_collection_protocol_fullmoon_todo_empty_dict", - "crud_collection_protocol_fullmoon_todo_to_dict", - "crud_collection_protocol_get_collection_info", - "crud_collection_protocol_get_collection_protocol", - "crud_collection_protocol_get_fullmoon_todo", - "crud_collection_protocol_get_party_customer", - "crud_collection_protocol_get_payment_by_protocol_id", - "crud_collection_protocol_get_protocol_detail_bundle", - "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", - "crud_collection_protocol_get_storage_cert", - "crud_collection_protocol_list_audits", - "crud_collection_protocol_list_collection_protocols", - "crud_collection_protocol_list_installment_warning", - "crud_collection_protocol_list_payment_details", - "crud_collection_protocol_list_payment_details_page", - "crud_collection_protocol_list_receipt_confirm_details", - "crud_collection_protocol_list_receipt_confirmed_details", - "crud_collection_protocol_list_refund_confirm_details", - "crud_collection_protocol_list_refund_confirmed_details", - "crud_collection_protocol_list_sample_transports", - "crud_collection_protocol_list_samples", - "crud_collection_protocol_list_storage_certs", - "crud_collection_protocol_load_protocol_storage_in_date_map", - "crud_collection_protocol_load_sample_type_name_map", - "crud_collection_protocol_lookup_attachment_by_url", - "crud_collection_protocol_migrate_sample_child_refs_on_replace", - "crud_collection_protocol_normalize_attachment_url_key", - "crud_collection_protocol_normalize_date_bound", - "crud_collection_protocol_normalize_fields", - "crud_collection_protocol_normalize_yyyymmdd_date", - "crud_collection_protocol_optional_decimal", - "crud_collection_protocol_party_customer_map_by_protocol_ids", - "crud_collection_protocol_party_customer_to_dict", - "crud_collection_protocol_payment_to_dict", - "crud_collection_protocol_pick_storage_in_date", - "crud_collection_protocol_pop_attachment_urls", - "crud_collection_protocol_protocol_to_dict", - "crud_collection_protocol_py", - "crud_collection_protocol_rows_to_payment_detail_dicts", - "crud_collection_protocol_sample_to_dict", - "crud_collection_protocol_save_payment_details", - "crud_collection_protocol_save_sample_transports", - "crud_collection_protocol_save_samples", - "crud_collection_protocol_soft_delete_collection_protocol", - "crud_collection_protocol_soft_delete_transports_for_protocol", - "crud_collection_protocol_storage_cert_to_dict", - "crud_collection_protocol_storage_in_date_to_yyyymmdd", - "crud_collection_protocol_today_yyyymmdd", - "crud_collection_protocol_total_pages", - "crud_collection_protocol_transport_to_dict", - "crud_collection_protocol_update_collection_protocol", - "crud_collection_protocol_upsert_collection_info", - "crud_collection_protocol_upsert_fullmoon_todo", - "crud_collection_protocol_upsert_party_customer", - "crud_collection_protocol_upsert_payment", - "crud_collection_protocol_upsert_storage_cert", - "crud_collection_protocol_user_nick_name_map", - "crud_collection_protocol_validate_sample_codes_not_used", - "crud_collection_protocol_yyyymmdd_from_date_param", - "crud_dept_cascade_soft_delete", - "crud_dept_create_dept", - "crud_dept_get_dept", - "crud_dept_list_depts", - "crud_dept_py", - "crud_dept_row_to_dict", - "crud_dept_soft_delete_dept", - "crud_dept_update_dept", - "crud_ethnic_list_ethnics", - "crud_ethnic_py", - "crud_ethnic_rationale_1", - "crud_ethnic_row_to_dict", - "crud_leave_create_leave", - "crud_leave_get_leave", - "crud_leave_list_leaves", - "crud_leave_py", - "crud_leave_row_to_dict", - "crud_leave_soft_delete_leave", - "crud_leave_total_pages", - "crud_leave_update_leave", - "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", - "crud_pilot_service_list_channel_agreement_prices", - "crud_pilot_service_list_channel_agreements", - "crud_pilot_service_list_channel_invoices", - "crud_pilot_service_list_channel_mail_addresses", - "crud_pilot_service_list_checkup_institution_invoices", - "crud_pilot_service_list_checkup_institution_projects", - "crud_pilot_service_list_project_system_items", - "crud_protocol_sample_collection_apply_sample_status_filter", - "crud_protocol_sample_collection_base_query", - "crud_protocol_sample_collection_fmt_dt", - "crud_protocol_sample_collection_list_protocol_sample_collections", - "crud_protocol_sample_collection_py", - "crud_protocol_sample_collection_row_to_dict", - "crud_protocol_sample_collection_sample_status_label", - "crud_protocol_sample_collection_total_pages", - "crud_research_donation_sample_collection_apply_sample_status_filter", - "crud_research_donation_sample_collection_base_query", - "crud_research_donation_sample_collection_fmt_dt", - "crud_research_donation_sample_collection_list_donation_sample_collections", - "crud_research_donation_sample_collection_py", - "crud_research_donation_sample_collection_row_to_dict", - "crud_research_donation_sample_collection_sample_status_label", - "crud_research_donation_sample_collection_total_pages" - ], - "9": [ "app_main_error_json", "app_main_health_check", - "app_main_lifespan", "app_main_mask_secret", "app_main_rationale_81", "app_main_rationale_92", @@ -2696,7 +2558,6 @@ "core_storage_process_image_content", "core_storage_py", "core_storage_qiniustorage", - "core_storage_qiniustorage_delete_file", "core_storage_qiniustorage_generate_filename", "core_storage_qiniustorage_get_url", "core_storage_qiniustorage_init", @@ -2707,223 +2568,202 @@ "core_storage_rationale_38", "core_storage_rationale_53", "core_storage_rationale_83", - "crud_workflow_create_task", "exception", "main_py", - "services_workflow_engine_workflowengine_resolve_approvers", - "tasks_init_init_scheduled_tasks", - "tasks_init_py", - "tasks_init_shutdown_scheduler" + "services_workflow_engine_workflowengine_resolve_approvers" + ], + "9": [ + "api_pilot_application_api_save_application", + "core_db_collation_eq_unicode", + "core_db_collation_like_unicode", + "core_db_collation_py", + "core_db_collation_rationale_1", + "core_db_collation_rationale_12", + "core_db_collation_rationale_7", + "core_db_collation_unicode_ci", + "crud_pilot_application_auto_generate_schedules", + "crud_pilot_application_complete_application", + "crud_pilot_application_create_application", + "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_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_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_accept_conclusion_label", + "crud_production_work_order_attach_outbound_detail", + "crud_production_work_order_attach_reception_detail", + "crud_production_work_order_complete_production_work_order", + "crud_production_work_order_configure_temp_production_work_order", + "crud_production_work_order_create_outbound_production_work_order", + "crud_production_work_order_create_production_work_order_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", + "crud_production_work_order_delete_temp_production_work_order", + "crud_production_work_order_enrich_outbound_items", + "crud_production_work_order_enrich_wo_items", + "crud_production_work_order_fmt_dt", + "crud_production_work_order_generate_outbound_work_order_no", + "crud_production_work_order_generate_temp_work_order_no", + "crud_production_work_order_generate_work_order_no", + "crud_production_work_order_get_production_info_map_for_samples", + "crud_production_work_order_get_production_work_order", + "crud_production_work_order_get_temp_production_work_order", + "crud_production_work_order_get_temp_production_work_order_detail", + "crud_production_work_order_list_production_work_orders", + "crud_production_work_order_list_temp_production_work_orders", + "crud_production_work_order_normalize_date_bound", + "crud_production_work_order_outbound_work_order_ids_by_keyword", + "crud_production_work_order_production_info_item", + "crud_production_work_order_production_task_info", + "crud_production_work_order_py", + "crud_production_work_order_reception_source_label", + "crud_production_work_order_soft_delete_sub", + "crud_production_work_order_sync_temp_production_work_order_status", + "crud_production_work_order_temp_wo_to_dict", + "crud_production_work_order_update_production_work_order", + "crud_production_work_order_wo_to_dict", + "crud_production_work_order_wo_to_response_dict", + "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword" ], "10": [ - "core_utils_generate_id", - "crud_base_camel_to_snake", - "crud_base_crudbase", - "crud_base_crudbase_create", - "crud_base_crudbase_delete", - "crud_base_crudbase_get_all", - "crud_base_crudbase_get_multi", - "crud_base_crudbase_hard_delete", - "crud_base_crudbase_init", - "crud_base_crudbase_update", - "crud_base_get_model_attr", - "crud_base_historycrud", - "crud_base_historycrud_create_history", - "crud_base_py", - "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_row_to_dict", - "crud_dict_type_soft_delete_dict_type", - "crud_dict_type_total_pages", - "crud_dict_type_update_dict_type", - "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_checkup_batch_create_checkups", - "crud_pilot_checkup_create_checkup", - "crud_pilot_checkup_delete_actual_item", - "crud_pilot_checkup_delete_reserve_item", - "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_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_soft_delete_delivery", - "crud_qc_item_param_list_params_by_item", - "crud_qc_item_param_py", - "crud_qc_item_param_row_to_dict", - "crud_qc_item_param_save_params_for_item", - "crud_role_create_role", - "crud_role_get_role", - "crud_role_get_role_data_scope", - "crud_role_get_role_menu_ids", - "crud_role_list_roles", - "crud_role_py", - "crud_role_role_name_exists", - "crud_role_row_to_dict", - "crud_role_soft_delete_role", - "crud_role_total_pages", - "crud_role_update_role", - "crud_role_update_role_data_scope", - "crud_role_update_role_menus", - "crud_storage_facility_clear_slots_by_facility_node", - "crud_user_create_user", - "crud_user_get_user", - "crud_user_get_user_with_relations", - "crud_user_hash_password", - "crud_user_list_post_ids_for_user", - "crud_user_list_user_ids_bound_to_post", - "crud_user_list_users", - "crud_user_py", - "crud_user_rationale_1", - "crud_user_rationale_134", - "crud_user_rationale_181", - "crud_user_replace_associations", - "crud_user_reset_password", - "crud_user_row_to_dict", - "crud_user_set_user_post_ids_only", - "crud_user_soft_delete_user", - "crud_user_sync_post_user_bindings", - "crud_user_total_pages", - "crud_user_update_user", - "crud_user_user_no_exists", - "crud_user_usercrudcompat", - "crud_user_usercrudcompat_get_by_user_no" + "api_production_get_next_cell_product_code", + "crud_cell_product_ancestor_link_from_cell_product_input", + "crud_cell_product_ancestor_sample_chain_link", + "crud_cell_product_apply_cell_product_status_change", + "crud_cell_product_build_ancestor_chain", + "crud_cell_product_build_descendant_chain", + "crud_cell_product_build_facility_path_label", + "crud_cell_product_build_split_product_codes", + "crud_cell_product_create_cell_product", + "crud_cell_product_create_cell_products_batch", + "crud_cell_product_create_cell_products_by_quantity", + "crud_cell_product_delete_cell_product", + "crud_cell_product_donation_sample_chain_node", + "crud_cell_product_donation_sample_customer_dict", + "crud_cell_product_edge_meta", + "crud_cell_product_enrich_product_dicts", + "crud_cell_product_find_cell_product_by_input", + "crud_cell_product_find_donation_sample", + "crud_cell_product_find_protocol_sample", + "crud_cell_product_get_cell_product", + "crud_cell_product_get_next_code", + "crud_cell_product_get_product_chain", + "crud_cell_product_list_cell_products", + "crud_cell_product_nest_ancestor_parent", + "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", + "crud_cell_product_row_to_dict", + "crud_cell_product_sample_customer_dict", + "crud_cell_product_sample_type_name_from_id", + "crud_cell_product_total_pages", + "crud_cell_product_update_cell_product", + "crud_cell_product_validate_batch_items", + "crud_production_task_add_task_step", + "crud_production_task_clone_route_to_task", + "crud_production_task_clone_step_consumables", + "crud_production_task_clone_step_data_collections", + "crud_production_task_clone_step_outputs", + "crud_production_task_clone_step_reagents", + "crud_production_task_consume_task_input_cell_products", + "crud_production_task_copy_task_step", + "crud_production_task_create_occupancy_for_product", + "crud_production_task_create_production_task", + "crud_production_task_delete_production_task", + "crud_production_task_delete_task_step", + "crud_production_task_enrich_outbound_task_items", + "crud_production_task_fmt_dt", + "crud_production_task_generate_task_no", + "crud_production_task_get_production_task_detail", + "crud_production_task_normalize_date_bound", + "crud_production_task_parse_optional_date", + "crud_production_task_py", + "crud_production_task_reorder_task_steps", + "crud_production_task_replace_step_data_collections", + "crud_production_task_replace_step_outputs", + "crud_production_task_resolve_sub_table_order_num", + "crud_production_task_set_task_inputs", + "crud_production_task_set_task_outputs", + "crud_production_task_soft_delete_sub", + "crud_production_task_step_consumable_to_dict", + "crud_production_task_step_data_collection_to_dict", + "crud_production_task_step_output_to_dict", + "crud_production_task_step_reagent_to_dict", + "crud_production_task_step_sub_tables_to_dict", + "crud_production_task_step_to_dict", + "crud_production_task_task_input_to_dict", + "crud_production_task_task_output_to_dict", + "crud_production_task_total_pages", + "crud_production_task_update_product_from_output", + "crud_production_task_update_production_task", + "crud_production_task_update_task_status", + "crud_production_work_order_sync_production_work_order_status_from_tasks", + "crud_storage_occupancy_batch_create_occupancies", + "crud_storage_occupancy_create_occupancy", + "crud_storage_occupancy_list_occupancies", + "crud_storage_occupancy_list_occupancy_history", + "crud_storage_occupancy_py", + "crud_storage_occupancy_rationale_1", + "crud_storage_occupancy_rationale_192", + "crud_storage_occupancy_rationale_34", + "crud_storage_occupancy_refresh_slot_cache", + "crud_storage_occupancy_remove_by_item", + "crud_storage_occupancy_remove_occupancy", + "crud_storage_occupancy_row_to_dict" ], "11": [ - "api_operations_accesslogcreatebody", - "api_operations_accesslogupdatebody", - "api_operations_batch_create_storage_slots", - "api_operations_cleanroomcreatebody", - "api_operations_cleanroomupdatebody", - "api_operations_create_access_log", - "api_operations_create_storage_slot", - "api_operations_delete_access_log", - "api_operations_delete_clean_room", - "api_operations_delete_storage_facility", - "api_operations_delete_storage_slot", - "api_operations_exhibitionappointmentcreatebody", - "api_operations_exhibitionappointmentupdatebody", - "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_normalize_visit_date_bound", - "api_operations_occupancycreatebody", - "api_operations_parse_optional_dt", - "api_operations_py", - "api_operations_rationale_1", - "api_operations_storagefacilitycreatebody", - "api_operations_storagefacilityupdatebody", - "api_operations_storageslotbatchcreatebody", - "api_operations_storageslotclearbody", - "api_operations_storageslotcreatebody", - "api_operations_storageslotinsertrowbody", - "api_operations_storageslotupdatebody", - "api_operations_update_access_log", - "api_operations_update_storage_slot", - "crud_clean_room_access_log_to_dict", - "crud_clean_room_create_access_log", - "crud_clean_room_create_clean_room", - "crud_clean_room_get_access_log", - "crud_clean_room_get_clean_room", - "crud_clean_room_list_access_logs", - "crud_clean_room_list_clean_rooms", - "crud_clean_room_py", - "crud_clean_room_rationale_1", - "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_total_pages", - "crud_clean_room_update_access_log", - "crud_clean_room_update_clean_room", - "crud_exhibition_appointment_appointment_no_exists", - "crud_exhibition_appointment_create_exhibition_appointment", - "crud_exhibition_appointment_format_visit_date", - "crud_exhibition_appointment_generate_appointment_no", - "crud_exhibition_appointment_get_exhibition_appointment", - "crud_exhibition_appointment_list_exhibition_appointments", - "crud_exhibition_appointment_py", - "crud_exhibition_appointment_rationale_1", - "crud_exhibition_appointment_rationale_100", - "crud_exhibition_appointment_rationale_16", - "crud_exhibition_appointment_row_to_dict", - "crud_exhibition_appointment_soft_delete_exhibition_appointment", - "crud_exhibition_appointment_update_exhibition_appointment", - "crud_storage_facility_batch_create_slots", - "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_165", - "crud_storage_facility_rationale_41", - "crud_storage_facility_rationale_63", - "crud_storage_facility_rationale_79", - "crud_storage_facility_row_to_dict", - "crud_storage_facility_slot_to_dict", - "crud_storage_facility_soft_delete_facility", - "crud_storage_facility_soft_delete_slot", - "crud_storage_facility_update_facility", - "crud_storage_facility_update_slot", - "models_models_bizcleanroom", - "models_models_bizcleanroomaccesslog", - "models_models_bizexhibitionappointment", - "models_models_bizstoragefacility", - "models_models_bizstoragefacilityslot" - ], - "12": [ "api_production_batchstockinbody", "api_production_batchstockinitem", "api_production_batchstockoutbody", @@ -2993,139 +2833,7 @@ "schemas_production_work_order_productionworkorderupdate", "schemas_production_work_order_py" ], - "13": [ - "api_public_avatar_url_field", - "api_public_build_user_info_payload", - "api_public_get_web_auth_menu_codes", - "api_public_jwt_user_payload", - "api_public_logout", - "api_public_py", - "api_public_rationale_1", - "api_public_rationale_197", - "api_public_rationale_249", - "api_public_rationale_43", - "api_public_rationale_70", - "api_public_rationale_81", - "api_public_refresh_token", - "api_public_web_login", - "api_public_web_login_rsa_public_key", - "core_auth_create_access_token", - "core_auth_create_refresh_token", - "core_auth_decode_token", - "core_auth_extend_session", - "core_auth_get_client_ip", - "core_auth_get_current_user", - "core_auth_get_current_user_by_token", - "core_auth_get_current_user_simple", - "core_auth_get_redis_client", - "core_auth_is_refresh_token_valid", - "core_auth_is_session_valid", - "core_auth_py", - "core_auth_rationale_107", - "core_auth_rationale_190", - "core_auth_rationale_76", - "core_auth_redis_session_enabled", - "core_auth_refresh_key", - "core_auth_revoke_refresh_token", - "core_auth_revoke_session", - "core_auth_session_key", - "core_auth_store_refresh_token", - "core_auth_store_session", - "core_login_crypto_decrypt_login_payload", - "core_login_crypto_ensure_initialized", - "core_login_crypto_extract_login_credentials", - "core_login_crypto_get_public_pem", - "core_login_crypto_py", - "core_login_crypto_rationale_1", - "core_login_crypto_rationale_63", - "core_login_crypto_rationale_84", - "core_login_crypto_validate_ts", - "core_menu_guard_get_user_menu_codes", - "core_menu_guard_py", - "core_menu_guard_rationale_1", - "core_menu_guard_rationale_16", - "core_menu_guard_rationale_24", - "core_menu_guard_rationale_29", - "core_menu_guard_rationale_48", - "core_menu_guard_require_admin_or_super_admin", - "core_menu_guard_require_any_menu_code", - "core_menu_guard_require_menu_code", - "core_security_get_password_hash", - "core_security_py", - "core_security_rationale_5", - "core_security_verify_password", - "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" - ], - "14": [ - "api_production_get_next_cell_product_code", - "crud_cell_product_ancestor_link_from_cell_product_input", - "crud_cell_product_ancestor_sample_chain_link", - "crud_cell_product_apply_cell_product_status_change", - "crud_cell_product_build_ancestor_chain", - "crud_cell_product_build_descendant_chain", - "crud_cell_product_build_facility_path_label", - "crud_cell_product_build_split_product_codes", - "crud_cell_product_create_cell_product", - "crud_cell_product_create_cell_products_batch", - "crud_cell_product_create_cell_products_by_quantity", - "crud_cell_product_delete_cell_product", - "crud_cell_product_donation_sample_chain_node", - "crud_cell_product_donation_sample_customer_dict", - "crud_cell_product_edge_meta", - "crud_cell_product_enrich_product_dicts", - "crud_cell_product_find_cell_product_by_input", - "crud_cell_product_find_donation_sample", - "crud_cell_product_find_protocol_sample", - "crud_cell_product_get_cell_product", - "crud_cell_product_get_next_code", - "crud_cell_product_get_product_chain", - "crud_cell_product_list_cell_products", - "crud_cell_product_nest_ancestor_parent", - "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", - "crud_cell_product_row_to_dict", - "crud_cell_product_sample_customer_dict", - "crud_cell_product_sample_type_name_from_id", - "crud_cell_product_total_pages", - "crud_cell_product_update_cell_product", - "crud_cell_product_validate_batch_items", - "crud_outbound_handover_inventory_apply_handover_inventory", - "crud_outbound_handover_inventory_get_cell_product_locked", - "crud_outbound_handover_inventory_handover_usage_remark", - "crud_outbound_handover_inventory_handover_usage_remark_prefix", - "crud_outbound_handover_inventory_py", - "crud_outbound_handover_inventory_rationale_1", - "crud_outbound_handover_inventory_rationale_158", - "crud_outbound_handover_inventory_rationale_231", - "crud_outbound_handover_inventory_rationale_35", - "crud_outbound_handover_inventory_rationale_65", - "crud_outbound_handover_inventory_remove_cell_occupancy_no_commit", - "crud_outbound_handover_inventory_restore_cell_occupancy_no_commit", - "crud_outbound_handover_inventory_revert_handover_inventory", - "crud_production_task_create_occupancy_for_product", - "crud_storage_occupancy_batch_create_occupancies", - "crud_storage_occupancy_create_occupancy", - "crud_storage_occupancy_list_occupancies", - "crud_storage_occupancy_list_occupancy_history", - "crud_storage_occupancy_py", - "crud_storage_occupancy_rationale_1", - "crud_storage_occupancy_rationale_192", - "crud_storage_occupancy_rationale_34", - "crud_storage_occupancy_refresh_slot_cache", - "crud_storage_occupancy_remove_by_item", - "crud_storage_occupancy_remove_occupancy", - "crud_storage_occupancy_row_to_dict", - "models_models_bizstorageslotoccupancy" - ], - "15": [ + "12": [ "api_research_donation_batch_delete_research_donations", "api_research_donation_change_donation_status", "api_research_donation_convert_from_storage", @@ -3148,7 +2856,14 @@ "crud_biz_no_generator_rationale_35", "crud_collection_protocol_create_collection_protocol", "crud_collection_protocol_format_sample_collect_summary", + "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", @@ -3181,48 +2896,114 @@ "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" ], - "16": [ - "crud_qc_sms_notification_apply_qc_status_filter", - "crud_qc_sms_notification_base_query", - "crud_qc_sms_notification_derive_qc_conclusion", - "crud_qc_sms_notification_ensure_notification", - "crud_qc_sms_notification_eq_ci", - "crud_qc_sms_notification_fetch_completed_tasks", - "crud_qc_sms_notification_fmt_dt", - "crud_qc_sms_notification_generate_sms_content", - "crud_qc_sms_notification_list_notifications", - "crud_qc_sms_notification_normalize_date_bound", - "crud_qc_sms_notification_py", - "crud_qc_sms_notification_qc_complete_time", - "crud_qc_sms_notification_qc_status_label", - "crud_qc_sms_notification_resolve_notification", - "crud_qc_sms_notification_row_to_dict", - "crud_qc_sms_notification_task_stats_subquery", - "crud_qc_sms_notification_toggle_notification_status", - "crud_qc_sms_notification_total_pages", - "crud_qc_sms_notification_unicode_ci", - "crud_sample_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" + "13": [ + "api_workflow_get_designer_data", + "api_workflow_processdefcreatebody", + "api_workflow_processdefupdatebody", + "api_workflow_publishversionbody", + "api_workflow_rationale_135", + "api_workflow_startinstancebody", + "api_workflow_taskactionbody", + "crud_qc_task_result_list_results_by_task", + "crud_qc_task_result_list_saved_results_by_task", + "crud_qc_task_result_merge_saved_into_template", + "crud_qc_task_result_py", + "crud_qc_task_result_resolve_task_item_ref", + "crud_qc_task_result_row_to_dict", + "crud_qc_task_result_save_results_for_task", + "crud_workflow_create_instance", + "crud_workflow_create_process_def", + "crud_workflow_create_task", + "crud_workflow_get_all_tasks_for_business", + "crud_workflow_get_instance", + "crud_workflow_get_latest_version", + "crud_workflow_get_nodes_by_version", + "crud_workflow_get_pending_tasks_by_node", + "crud_workflow_get_process_def", + "crud_workflow_get_task", + "crud_workflow_get_transitions_by_version", + "crud_workflow_list_process_defs", + "crud_workflow_list_versions", + "crud_workflow_process_code_exists", + "crud_workflow_publish_version", + "crud_workflow_py", + "crud_workflow_rationale_1", + "crud_workflow_row_to_dict", + "crud_workflow_soft_delete_process_def", + "crud_workflow_total_pages", + "crud_workflow_update_instance_status", + "crud_workflow_update_process_def", + "crud_workflow_version_to_dict", + "models_models_wfnode", + "models_models_wfprocessdef", + "models_models_wfprocessversion", + "models_models_wftask", + "services_workflow_callback_dispatch_local", + "services_workflow_callback_py", + "services_workflow_callback_rationale_1", + "services_workflow_callback_rationale_24", + "services_workflow_callback_rationale_29", + "services_workflow_callback_rationale_61", + "services_workflow_callback_register_local_callback", + "services_workflow_callback_trigger_callback", + "services_workflow_engine_compare", + "services_workflow_engine_get_variable", + "services_workflow_engine_parse_node_config", + "services_workflow_engine_parse_variables", + "services_workflow_engine_py", + "services_workflow_engine_rationale_1", + "services_workflow_engine_workflowengine", + "services_workflow_engine_workflowengine_advance", + "services_workflow_engine_workflowengine_approve_task", + "services_workflow_engine_workflowengine_check_rules", + "services_workflow_engine_workflowengine_evaluate_condition", + "services_workflow_engine_workflowengine_execute_node", + "services_workflow_engine_workflowengine_init", + "services_workflow_engine_workflowengine_reject_task", + "services_workflow_engine_workflowengine_start_process" ], - "17": [ + "14": [ + "api_insurance_company_create_insurance_company", + "api_insurance_company_create_insurance_company_invoice", + "api_insurance_company_create_insurance_project_price", + "api_insurance_company_delete_insurance_company", + "api_insurance_company_delete_insurance_company_invoice", + "api_insurance_company_delete_insurance_project_price", + "api_insurance_company_fmt_dt", + "api_insurance_company_generate_uuid", + "api_insurance_company_get_tenant_no", + "api_insurance_company_insurancecompanycreatebody", + "api_insurance_company_insurancecompanyinvoicecreatebody", + "api_insurance_company_insurancecompanyinvoiceupdatebody", + "api_insurance_company_insurancecompanyupdatebody", + "api_insurance_company_insuranceprojectpricecreatebody", + "api_insurance_company_insuranceprojectpriceupdatebody", + "api_insurance_company_list_insurance_companies", + "api_insurance_company_list_insurance_company_invoices", + "api_insurance_company_list_insurance_project_prices", + "api_insurance_company_py", + "api_insurance_company_rationale_1", + "api_insurance_company_row_to_dict_company", + "api_insurance_company_row_to_dict_invoice", + "api_insurance_company_row_to_dict_project_price", + "api_insurance_company_soft_delete_insurance_company", + "api_insurance_company_soft_delete_insurance_company_invoice", + "api_insurance_company_soft_delete_insurance_project_price", + "api_insurance_company_total_pages", + "api_insurance_company_update_insurance_company", + "api_insurance_company_update_insurance_company_invoice", + "api_insurance_company_update_insurance_project_price", + "models_models_bizinsurancecompany", + "models_models_bizinsurancecompanyinvoice", + "models_models_bizinsuranceprojectprice" + ], + "15": [ "core_wechat_pay_get_wechat_pay_client", "core_wechat_pay_get_wechat_pay_v2", "core_wechat_pay_py", @@ -3255,7 +3036,114 @@ "core_wechat_pay_wechatpayv2client_unified_order", "core_wechat_pay_wechatpayv2client_xml_to_dict" ], + "16": [ + "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" + ], + "17": [ + "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_log_display_remark", + "crud_consumable_stock_log_list_stock_logs", + "crud_consumable_stock_log_parse_receiver_purpose_from_remark", + "crud_consumable_stock_log_py", + "crud_consumable_stock_log_rationale_1", + "crud_consumable_stock_log_resolve_receiver_purpose", + "crud_consumable_stock_log_row_to_dict", + "crud_consumable_stock_log_user_nick_name_map", + "crud_consumable_stock_out", + "crud_consumable_total_pages", + "crud_consumable_update_consumable", + "models_models_bizconsumablestocklog" + ], "18": [ + "crud_clean_room_access_log_to_dict", + "crud_clean_room_create_access_log", + "crud_clean_room_create_clean_room", + "crud_clean_room_get_access_log", + "crud_clean_room_get_clean_room", + "crud_clean_room_list_access_logs", + "crud_clean_room_list_clean_rooms", + "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_total_pages", + "crud_clean_room_update_access_log", + "crud_clean_room_update_clean_room", + "crud_post_create_post", + "crud_post_list_posts", + "crud_post_post_code_exists", + "crud_post_py", + "crud_post_row_to_dict", + "crud_post_total_pages", + "crud_post_update_post" + ], + "19": [ + "api_pilot_delivery_get_by_schedule", + "api_pilot_delivery_get_method", + "api_pilot_delivery_get_tenant_no", + "api_pilot_delivery_list_by_application", + "api_pilot_delivery_list_materials", + "api_pilot_delivery_py", + "api_pilot_delivery_rationale_1", + "api_pilot_delivery_soft_delete", + "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_materials", + "crud_pilot_delivery_save_delivery_method", + "crud_pilot_delivery_soft_delete_delivery" + ], + "20": [ "crud_process_consumable_row_to_dict", "crud_process_create_process", "crud_process_create_sub_consumable", @@ -3278,46 +3166,61 @@ "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", - "crud_qc_third_party_company_list_companies", - "crud_qc_third_party_company_list_company_options", - "crud_qc_third_party_company_py", - "crud_qc_third_party_company_row_to_dict", - "crud_qc_third_party_company_soft_delete_company", - "crud_qc_third_party_company_update_company", - "crud_qc_third_party_item_company_name_map", - "crud_qc_third_party_item_create_item", - "crud_qc_third_party_item_dec", - "crud_qc_third_party_item_get_item", - "crud_qc_third_party_item_item_code_exists", - "crud_qc_third_party_item_list_active_items", - "crud_qc_third_party_item_list_items", - "crud_qc_third_party_item_py", - "crud_qc_third_party_item_row_to_dict", - "crud_qc_third_party_item_soft_delete_item", - "crud_qc_third_party_item_update_item" - ], - "20": [ - "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_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_total_pages", - "crud_qc_material_update_material" - ], "21": [ + "crud_material_batch_stock_in", + "crud_material_batch_stock_out", + "crud_material_code_exists", + "crud_material_create_material", + "crud_material_dec", + "crud_material_fmt_dt", + "crud_material_get_material", + "crud_material_list_materials", + "crud_material_options_list", + "crud_material_py", + "crud_material_rationale_328", + "crud_material_rationale_475", + "crud_material_row_to_dict", + "crud_material_soft_delete_material", + "crud_material_stock_in", + "crud_material_stock_out", + "crud_material_update_material" + ], + "22": [ + "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" + ], + "23": [ + "crud_qc_material_usage_deduct_for_task", + "crud_qc_material_usage_display_remark", + "crud_qc_material_usage_list_usages", + "crud_qc_material_usage_list_usages_by_task", + "crud_qc_material_usage_parse_receiver_purpose_from_remark", + "crud_qc_material_usage_py", + "crud_qc_material_usage_rationale_155", + "crud_qc_material_usage_rationale_177", + "crud_qc_material_usage_rationale_18", + "crud_qc_material_usage_rationale_227", + "crud_qc_material_usage_rationale_40", + "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_user_nick_name_map" + ], + "24": [ "crud_collection_protocol_no_batch_issue_protocol_nos", "crud_collection_protocol_no_batch_revoke_protocol_nos", "crud_collection_protocol_no_create_protocol_no", @@ -3334,7 +3237,7 @@ "crud_collection_protocol_no_total_pages", "crud_collection_protocol_no_update_protocol_no" ], - "22": [ + "25": [ "core_wechat_message_py", "core_wechat_message_rationale_1", "core_wechat_message_rationale_86", @@ -3349,21 +3252,104 @@ "core_wechat_message_wechatmessageservice_init", "core_wechat_message_wechatmessageservice_send_template_message" ], - "23": [ - "api_collection_protocol_ensure_customer_for_mother", - "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" + "26": [ + "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": [ + "27": [ + "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" + ], + "28": [ + "crud_exhibition_appointment_appointment_no_exists", + "crud_exhibition_appointment_create_exhibition_appointment", + "crud_exhibition_appointment_format_visit_date", + "crud_exhibition_appointment_generate_appointment_no", + "crud_exhibition_appointment_get_exhibition_appointment", + "crud_exhibition_appointment_list_exhibition_appointments", + "crud_exhibition_appointment_py", + "crud_exhibition_appointment_rationale_1", + "crud_exhibition_appointment_rationale_100", + "crud_exhibition_appointment_rationale_16", + "crud_exhibition_appointment_row_to_dict", + "crud_exhibition_appointment_soft_delete_exhibition_appointment", + "crud_exhibition_appointment_update_exhibition_appointment" + ], + "29": [ + "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" + ], + "30": [ + "crud_dept_build_tree", + "crud_dept_cascade_soft_delete", + "crud_dept_collect_with_ancestors", + "crud_dept_create_dept", + "crud_dept_get_dept", + "crud_dept_list_depts", + "crud_dept_list_depts_tree", + "crud_dept_py", + "crud_dept_rationale_41", + "crud_dept_row_to_dict", + "crud_dept_soft_delete_dept", + "crud_dept_update_dept" + ], + "31": [ + "crud_sop_document_create_sop_document", + "crud_sop_document_get_sop_document", + "crud_sop_document_list_sop_documents", + "crud_sop_document_py", + "crud_sop_document_rationale_1", + "crud_sop_document_row_to_dict", + "crud_sop_document_soft_delete_sop_document", + "crud_sop_document_sop_code_exists", + "crud_sop_document_total_pages", + "crud_sop_document_update_sop_document" + ], + "32": [ + "crud_express_company_create_express_company", + "crud_express_company_express_code_exists", + "crud_express_company_get_express_company", + "crud_express_company_list_express_companies", + "crud_express_company_py", + "crud_express_company_rationale_1", + "crud_express_company_row_to_dict", + "crud_express_company_soft_delete_express_company", + "crud_express_company_total_pages", + "crud_express_company_update_express_company" + ], + "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", @@ -3375,30 +3361,100 @@ "crud_sample_reception_check_item_soft_delete_check_item", "crud_sample_reception_check_item_update_check_item" ], - "25": [ - "crud_qc_material_usage_deduct_for_task", - "crud_qc_material_usage_display_remark", - "crud_qc_material_usage_list_usages", - "crud_qc_material_usage_list_usages_by_task", - "crud_qc_material_usage_parse_receiver_purpose_from_remark", - "crud_qc_material_usage_py", - "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_user_nick_name_map" + "34": [ + "crud_dict_data_create_dict_data", + "crud_dict_data_get_dict_data", + "crud_dict_data_list_dict_data", + "crud_dict_data_list_dict_data_options", + "crud_dict_data_py", + "crud_dict_data_rationale_1", + "crud_dict_data_row_to_dict", + "crud_dict_data_soft_delete_dict_data", + "crud_dict_data_total_pages", + "crud_dict_data_update_dict_data" ], - "26": [ - "crud_qc_lab_test_item_create_lab_item", - "crud_qc_lab_test_item_get_lab_item", - "crud_qc_lab_test_item_item_code_exists", - "crud_qc_lab_test_item_list_active_lab_items", - "crud_qc_lab_test_item_list_lab_items", - "crud_qc_lab_test_item_py", - "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" + "35": [ + "crud_process_category_category_code_exists", + "crud_process_category_create_process_category", + "crud_process_category_get_process_category", + "crud_process_category_list_process_categories", + "crud_process_category_py", + "crud_process_category_rationale_1", + "crud_process_category_row_to_dict", + "crud_process_category_soft_delete_process_category", + "crud_process_category_total_pages", + "crud_process_category_update_process_category" ], - "27": [ + "36": [ + "crud_item_unit_create_item_unit", + "crud_item_unit_get_item_unit", + "crud_item_unit_list_item_units", + "crud_item_unit_py", + "crud_item_unit_rationale_1", + "crud_item_unit_row_to_dict", + "crud_item_unit_soft_delete_item_unit", + "crud_item_unit_total_pages", + "crud_item_unit_unit_code_exists", + "crud_item_unit_update_item_unit" + ], + "37": [ + "crud_cell_sample_type_create_cell_sample_type", + "crud_cell_sample_type_get_cell_sample_type", + "crud_cell_sample_type_list_cell_sample_types", + "crud_cell_sample_type_py", + "crud_cell_sample_type_rationale_1", + "crud_cell_sample_type_row_to_dict", + "crud_cell_sample_type_soft_delete_cell_sample_type", + "crud_cell_sample_type_total_pages", + "crud_cell_sample_type_type_code_exists", + "crud_cell_sample_type_update_cell_sample_type" + ], + "38": [ + "crud_output_type_create_output_type", + "crud_output_type_get_output_type", + "crud_output_type_list_output_types", + "crud_output_type_py", + "crud_output_type_rationale_1", + "crud_output_type_row_to_dict", + "crud_output_type_soft_delete_output_type", + "crud_output_type_total_pages", + "crud_output_type_type_code_exists", + "crud_output_type_update_output_type" + ], + "39": [ + "crud_tenant_create_tenant", + "crud_tenant_get_tenant", + "crud_tenant_list_tenants", + "crud_tenant_py", + "crud_tenant_row_to_dict", + "crud_tenant_soft_delete_tenant", + "crud_tenant_tenant_no_exists", + "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": [ + "crud_site_create_site", + "crud_site_get_site", + "crud_site_list_sites", + "crud_site_py", + "crud_site_row_to_dict", + "crud_site_site_code_exists", + "crud_site_soft_delete_site", + "crud_site_total_pages", + "crud_site_update_site" + ], + "42": [ "models_base_basemodel", "models_base_basemodel_to_dict", "models_base_get_active", @@ -3408,7 +3464,7 @@ "models_base_softdeletemodel_soft_delete", "models_base_tablename" ], - "28": [ + "43": [ "core_order_status_compat_derive_legacy_status_from_three", "core_order_status_compat_derive_three_status_from_legacy", "core_order_status_compat_py", @@ -3417,65 +3473,65 @@ "core_order_status_compat_threestatus", "core_order_status_compat_to_decimal" ], - "29": [ + "44": [ "basesettings", "core_config_config", "core_config_py", "core_config_settings" ], - "30": [ + "45": [ "core_database_auto_fill_create_dept_id", "core_database_get_db", "core_database_py", "core_database_rationale_31" ], - "31": [ + "46": [ "api_menu_get_menu_list", "api_menu_py", "api_menu_rationale_1" ], - "32": [ + "47": [ "core_context_py", "core_context_rationale_1" ], - "33": [ + "48": [ "api_init_py", "api_init_rationale_1" ], - "34": [ + "49": [ "init_py" ], - "35": [ + "50": [ "core_init_py" ], - "36": [ + "51": [ "core_wechat_message_rationale_143" ], - "37": [ + "52": [ "core_wechat_message_rationale_179" ], - "38": [ + "53": [ "core_wechat_message_rationale_215" ], - "39": [ + "54": [ "core_wechat_message_rationale_251" ], - "40": [ + "55": [ "core_wechat_message_rationale_289" ], - "41": [ + "56": [ "core_wechat_message_rationale_325" ], - "42": [ + "57": [ "models_init_py" ], - "43": [ + "58": [ "schemas_init_py" ], - "44": [ + "59": [ "crud_init_py" ], - "45": [ + "60": [ "ws_init_py" ] }, @@ -3484,64 +3540,79 @@ "1": 0.01, "2": 0.05, "3": 0.02, - "4": 0.07, - "5": 0.02, + "4": 0.05, + "5": 0.03, "6": 0.03, "7": 0.03, "8": 0.03, - "9": 0.03, - "10": 0.03, - "11": 0.06, - "12": 0.35, - "13": 0.06, - "14": 0.06, - "15": 0.08, - "16": 0.12, - "17": 0.12, - "18": 0.21, - "19": 0.18, - "20": 0.25, - "21": 0.25, - "22": 0.24, - "23": 0.24, - "24": 0.38, - "25": 0.36, - "26": 0.39, - "27": 0.29, - "28": 0.38, - "29": 0.5, - "30": 0.5, - "31": 0.67, - "32": 1.0, - "33": 1.0, - "34": 1.0, - "35": 1.0, - "36": 1.0, - "37": 1.0, - "38": 1.0, - "39": 1.0, - "40": 1.0, - "41": 1.0, - "42": 1.0, - "43": 1.0, - "44": 1.0, - "45": 1.0 + "9": 0.04, + "10": 0.05, + "11": 0.35, + "12": 0.07, + "13": 0.07, + "14": 0.16, + "15": 0.12, + "16": 0.16, + "17": 0.14, + "18": 0.13, + "19": 0.16, + "20": 0.21, + "21": 0.21, + "22": 0.25, + "23": 0.2, + "24": 0.25, + "25": 0.24, + "26": 0.23, + "27": 0.27, + "28": 0.24, + "29": 0.24, + "30": 0.27, + "31": 0.31, + "32": 0.31, + "33": 0.38, + "34": 0.27, + "35": 0.31, + "36": 0.31, + "37": 0.31, + "38": 0.31, + "39": 0.36, + "40": 0.33, + "41": 0.36, + "42": 0.29, + "43": 0.38, + "44": 0.5, + "45": 0.5, + "46": 0.67, + "47": 1.0, + "48": 1.0, + "49": 1.0, + "50": 1.0, + "51": 1.0, + "52": 1.0, + "53": 1.0, + "54": 1.0, + "55": 1.0, + "56": 1.0, + "57": 1.0, + "58": 1.0, + "59": 1.0, + "60": 1.0 }, "gods": [ { "id": "core_response_success_response", "label": "success_response()", - "degree": 524 + "degree": 527 }, { "id": "core_response_error_response", "label": "error_response()", - "degree": 424 + "degree": 427 }, { "id": "models_models_sysuser", "label": "SysUser", - "degree": 359 + "degree": 363 }, { "id": "models_qc_param_bizqctaskresult", @@ -3603,37 +3674,37 @@ "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": "\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", + "source": "\u4e2d\u8bd5\u670d\u52a1\u4ea4\u4ed8\u7ba1\u7406 API\uff08\u4ea4\u4ed8\u4fe1\u606f\u3001\u4ea4\u4ed8\u7269\u6599\u3001\u4ea4\u4ed8\u65b9\u5f0f\uff09", "target": "SysUser", "source_files": [ - "api/public.py", + "api/pilot_delivery.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 `\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` unexpectedly reaches hub `SysUser`" + "why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `\u4e2d\u8bd5\u670d\u52a1\u4ea4\u4ed8\u7ba1\u7406 API\uff08\u4ea4\u4ed8\u4fe1\u606f\u3001\u4ea4\u4ed8\u7269\u6599\u3001\u4ea4\u4ed8\u65b9\u5f0f\uff09` unexpectedly reaches hub `SysUser`" }, { - "source": "\u4e0e web-admin `userInfo` \u5b57\u6bb5\u7ea6\u5b9a\u4e00\u81f4\u3002", - "target": "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", "source_files": [ - "api/public.py", + "crud/dept.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 `\u4e0e web-admin `userInfo` \u5b57\u6bb5\u7ea6\u5b9a\u4e00\u81f4\u3002` unexpectedly reaches hub `SysUser`" + "why": "inferred connection - not explicitly stated in source; connects across different repos/directories; bridges separate communities; peripheral node `\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` unexpectedly reaches hub `SysDept`" }, { - "source": "Web \u7aef\u767b\u5f55\u7528 RSA \u516c\u94a5\uff08PKCS#1 v1.5\uff0c\u4e0e JSEncrypt \u4e00\u81f4\uff09", - "target": "SysUser", + "source": "\u7269\u54c1\u5355\u4f4d CRUD\uff08biz_item_unit\uff09", + "target": "BizItemUnit", "source_files": [ - "api/public.py", + "crud/item_unit.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 `Web \u7aef\u767b\u5f55\u7528 RSA \u516c\u94a5\uff08PKCS#1 v1.5\uff0c\u4e0e JSEncrypt \u4e00\u81f4\uff09` unexpectedly reaches hub `SysUser`" + "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`" } ] } \ No newline at end of file diff --git a/backend/graphify-out/.graphify_extract.json b/backend/graphify-out/.graphify_extract.json index 7141f53d..7d813a64 100644 --- a/backend/graphify-out/.graphify_extract.json +++ b/backend/graphify-out/.graphify_extract.json @@ -215,21 +215,21 @@ "label": "get_current_user()", "file_type": "code", "source_file": "core/auth.py", - "source_location": "L245" + "source_location": "L251" }, { "id": "core_auth_get_current_user_simple", "label": "get_current_user_simple()", "file_type": "code", "source_file": "core/auth.py", - "source_location": "L253" + "source_location": "L259" }, { "id": "core_auth_get_client_ip", "label": "get_client_ip()", "file_type": "code", "source_file": "core/auth.py", - "source_location": "L272" + "source_location": "L278" }, { "id": "core_auth_rationale_76", @@ -411,7 +411,7 @@ "label": "Config", "file_type": "code", "source_file": "core/config.py", - "source_location": "L144" + "source_location": "L145" }, { "id": "core_wechat_pay_py", @@ -714,6 +714,48 @@ "source_file": "core/api_request_log_middleware.py", "source_location": "L1" }, + { + "id": "core_avatar_url_py", + "label": "avatar_url.py", + "file_type": "code", + "source_file": "core/avatar_url.py", + "source_location": "L1" + }, + { + "id": "core_avatar_url_resolve_avatar_display_url", + "label": "resolve_avatar_display_url()", + "file_type": "code", + "source_file": "core/avatar_url.py", + "source_location": "L8" + }, + { + "id": "core_avatar_url_extract_avatar_storage_key", + "label": "extract_avatar_storage_key()", + "file_type": "code", + "source_file": "core/avatar_url.py", + "source_location": "L27" + }, + { + "id": "core_avatar_url_rationale_1", + "label": "\u7528\u6237\u5934\u50cf URL \u89e3\u6790\uff08sys_user.avatar \u53ef\u80fd\u5b58 MinIO \u76f8\u5bf9\u8def\u5f84\u6216\u5b8c\u6574 URL\uff09", + "file_type": "rationale", + "source_file": "core/avatar_url.py", + "source_location": "L1" + }, + { + "id": "core_avatar_url_rationale_9", + "label": "\u670d\u52a1\u7aef\u5185\u90e8\u62fc\u5b8c\u6574 URL\uff08\u90ae\u4ef6\u7b49\uff09\uff1bWeb API \u5e94\u8fd4\u56de\u5e93\u4e2d\u539f\u59cb\u8def\u5f84\u3002", + "file_type": "rationale", + "source_file": "core/avatar_url.py", + "source_location": "L9" + }, + { + "id": "core_avatar_url_rationale_28", + "label": "\u4ece upload \u8fd4\u56de\u503c\u6216\u5386\u53f2\u5b8c\u6574 URL \u4e2d\u63d0\u53d6 avatar/ \u76f8\u5bf9\u8def\u5f84\u3002", + "file_type": "rationale", + "source_file": "core/avatar_url.py", + "source_location": "L28" + }, { "id": "core_database_py", "label": "database.py", @@ -4235,12 +4277,19 @@ "source_file": "schemas/auth.py", "source_location": "L48" }, + { + "id": "schemas_auth_profileupdaterequest", + "label": "ProfileUpdateRequest", + "file_type": "code", + "source_file": "schemas/auth.py", + "source_location": "L54" + }, { "id": "schemas_auth_resetpasswordrequest", "label": "ResetPasswordRequest", "file_type": "code", "source_file": "schemas/auth.py", - "source_location": "L54" + "source_location": "L65" }, { "id": "schemas_auth_rationale_1", @@ -4249,6 +4298,13 @@ "source_file": "schemas/auth.py", "source_location": "L1" }, + { + "id": "schemas_auth_rationale_55", + "label": "\u5f53\u524d\u7528\u6237\u4e2a\u4eba\u4fe1\u606f\u66f4\u65b0\uff08\u4ec5\u5141\u8bb8\u81ea\u52a9\u4fee\u6539\u7684\u5b57\u6bb5\uff09", + "file_type": "rationale", + "source_file": "schemas/auth.py", + "source_location": "L55" + }, { "id": "schemas_delivery_py", "label": "delivery.py", @@ -7854,12 +7910,19 @@ "source_file": "crud/user.py", "source_location": "L411" }, + { + "id": "crud_user_change_password", + "label": "change_password()", + "file_type": "code", + "source_file": "crud/user.py", + "source_location": "L421" + }, { "id": "crud_user_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "crud/user.py", - "source_location": "L421" + "source_location": "L440" }, { "id": "crud_user_rationale_1", @@ -9420,616 +9483,616 @@ "label": "get_protocol_nos_used_in_protocols()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L51" + "source_location": "L52" }, { "id": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "label": "get_sample_codes_used_in_protocol_samples()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L85" + "source_location": "L86" }, { "id": "crud_collection_protocol_validate_sample_codes_not_used", "label": "validate_sample_codes_not_used()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L119" + "source_location": "L120" }, { "id": "crud_collection_protocol_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L152" + "source_location": "L153" }, { "id": "crud_collection_protocol_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L158" + "source_location": "L159" }, { "id": "crud_collection_protocol_dec", "label": "_dec()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L162" + "source_location": "L163" }, { "id": "crud_collection_protocol_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L170" + "source_location": "L171" }, { "id": "crud_collection_protocol_today_yyyymmdd", "label": "_today_yyyymmdd()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L176" + "source_location": "L177" }, { "id": "crud_collection_protocol_normalize_yyyymmdd_date", "label": "_normalize_yyyymmdd_date()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L180" + "source_location": "L181" }, { "id": "crud_collection_protocol_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L199" + "source_location": "L200" }, { "id": "crud_collection_protocol_pop_attachment_urls", "label": "_pop_attachment_urls()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L210" + "source_location": "L211" }, { "id": "crud_collection_protocol_attachments_to_urls", "label": "attachments_to_urls()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L221" + "source_location": "L222" }, { "id": "crud_collection_protocol_normalize_attachment_url_key", "label": "_normalize_attachment_url_key()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L240" + "source_location": "L241" }, { "id": "crud_collection_protocol_format_attachment_file_size", "label": "_format_attachment_file_size()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L249" + "source_location": "L250" }, { "id": "crud_collection_protocol_lookup_attachment_by_url", "label": "_lookup_attachment_by_url()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L257" + "source_location": "L258" }, { "id": "crud_collection_protocol_urls_to_attachment_list", "label": "urls_to_attachment_list()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L281" + "source_location": "L282" }, { "id": "crud_collection_protocol_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L313" + "source_location": "L314" }, { "id": "crud_collection_protocol_protocol_to_dict", "label": "_protocol_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L321" + "source_location": "L322" }, { "id": "crud_collection_protocol_payment_to_dict", "label": "_payment_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L346" + "source_location": "L347" }, { "id": "crud_collection_protocol_detail_to_dict", "label": "_detail_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L364" + "source_location": "L365" }, { "id": "crud_collection_protocol_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L410" + "source_location": "L411" }, { "id": "crud_collection_protocol_party_customer_to_dict", "label": "_party_customer_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L432" + "source_location": "L433" }, { "id": "crud_collection_protocol_collection_info_to_dict", "label": "_collection_info_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L466" + "source_location": "L467" }, { "id": "crud_collection_protocol_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L484" + "source_location": "L485" }, { "id": "crud_collection_protocol_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L508" + "source_location": "L509" }, { "id": "crud_collection_protocol_storage_cert_to_dict", "label": "_storage_cert_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L528" + "source_location": "L529" }, { "id": "crud_collection_protocol_format_newborn_info", "label": "_format_newborn_info()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L543" + "source_location": "L544" }, { "id": "crud_collection_protocol_format_sample_collect_summary", "label": "_format_sample_collect_summary()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L560" + "source_location": "L561" }, { "id": "crud_collection_protocol_format_storage_cert_sample_info", "label": "_format_storage_cert_sample_info()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L578" + "source_location": "L579" }, { "id": "crud_collection_protocol_pick_storage_in_date", "label": "_pick_storage_in_date()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L595" + "source_location": "L596" }, { "id": "crud_collection_protocol_load_protocol_storage_in_date_map", "label": "_load_protocol_storage_in_date_map()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L603" + "source_location": "L604" }, { "id": "crud_collection_protocol_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L634" + "source_location": "L635" }, { "id": "crud_collection_protocol_list_storage_certs", "label": "list_storage_certs()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L648" + "source_location": "L649" }, { "id": "crud_collection_protocol_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L781" + "source_location": "L782" }, { "id": "crud_collection_protocol_yyyymmdd_from_date_param", "label": "_yyyymmdd_from_date_param()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L788" + "source_location": "L789" }, { "id": "crud_collection_protocol_storage_in_date_to_yyyymmdd", "label": "_storage_in_date_to_yyyymmdd()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L796" + "source_location": "L797" }, { "id": "crud_collection_protocol_list_collection_protocols", "label": "list_collection_protocols()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L801" + "source_location": "L802" }, { "id": "crud_collection_protocol_get_collection_protocol", "label": "get_collection_protocol()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1036" + "source_location": "L1037" }, { "id": "crud_collection_protocol_get_payment_by_protocol_id", "label": "get_payment_by_protocol_id()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1055" + "source_location": "L1056" }, { "id": "crud_collection_protocol_get_protocol_detail_bundle", "label": "get_protocol_detail_bundle()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1069" + "source_location": "L1070" }, { "id": "crud_collection_protocol_list_audits", "label": "list_audits()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1192" + "source_location": "L1193" }, { "id": "crud_collection_protocol_create_audit", "label": "create_audit()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1252" + "source_location": "L1253" }, { "id": "crud_collection_protocol_detail_query_with_protocol", "label": "_detail_query_with_protocol()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1289" + "source_location": "L1290" }, { "id": "crud_collection_protocol_apply_payment_detail_list_filters", "label": "_apply_payment_detail_list_filters()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1308" + "source_location": "L1309" }, { "id": "crud_collection_protocol_rows_to_payment_detail_dicts", "label": "_rows_to_payment_detail_dicts()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1348" + "source_location": "L1349" }, { "id": "crud_collection_protocol_list_receipt_confirm_details", "label": "list_receipt_confirm_details()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1382" + "source_location": "L1383" }, { "id": "crud_collection_protocol_list_receipt_confirmed_details", "label": "list_receipt_confirmed_details()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1419" + "source_location": "L1420" }, { "id": "crud_collection_protocol_confirm_receipt", "label": "confirm_receipt()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1465" + "source_location": "L1466" }, { "id": "crud_collection_protocol_list_refund_confirm_details", "label": "list_refund_confirm_details()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1504" + "source_location": "L1505" }, { "id": "crud_collection_protocol_list_refund_confirmed_details", "label": "list_refund_confirmed_details()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1549" + "source_location": "L1550" }, { "id": "crud_collection_protocol_confirm_refund", "label": "confirm_refund()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1597" + "source_location": "L1598" }, { "id": "crud_collection_protocol_get_payment_detail_or_raise", "label": "_get_payment_detail_or_raise()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1636" + "source_location": "L1637" }, { "id": "crud_collection_protocol_apply_submit_receipt_finance", "label": "_apply_submit_receipt_finance()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1658" + "source_location": "L1659" }, { "id": "crud_collection_protocol_submit_receipt_finance", "label": "submit_receipt_finance()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1670" + "source_location": "L1671" }, { "id": "crud_collection_protocol_batch_submit_receipt_finance", "label": "batch_submit_receipt_finance()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1685" + "source_location": "L1686" }, { "id": "crud_collection_protocol_apply_submit_refund_finance", "label": "_apply_submit_refund_finance()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1703" + "source_location": "L1704" }, { "id": "crud_collection_protocol_submit_refund_finance", "label": "submit_refund_finance()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1723" + "source_location": "L1724" }, { "id": "crud_collection_protocol_batch_submit_refund_finance", "label": "batch_submit_refund_finance()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1747" + "source_location": "L1748" }, { "id": "crud_collection_protocol_party_customer_map_by_protocol_ids", "label": "_party_customer_map_by_protocol_ids()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1774" + "source_location": "L1775" }, { "id": "crud_collection_protocol_list_payment_details_page", "label": "list_payment_details_page()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1798" + "source_location": "L1799" }, { "id": "crud_collection_protocol_classify_installment_warning", "label": "_classify_installment_warning()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1878" + "source_location": "L1879" }, { "id": "crud_collection_protocol_list_installment_warning", "label": "list_installment_warning()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1890" + "source_location": "L1891" }, { "id": "crud_collection_protocol_create_collection_protocol", "label": "create_collection_protocol()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1943" + "source_location": "L1944" }, { "id": "crud_collection_protocol_update_collection_protocol", "label": "update_collection_protocol()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L1986" + "source_location": "L1987" }, { "id": "crud_collection_protocol_soft_delete_collection_protocol", "label": "soft_delete_collection_protocol()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2051" + "source_location": "L2052" }, { "id": "crud_collection_protocol_get_party_customer", "label": "get_party_customer()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2075" + "source_location": "L2076" }, { "id": "crud_collection_protocol_upsert_party_customer", "label": "upsert_party_customer()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2089" + "source_location": "L2090" }, { "id": "crud_collection_protocol_get_collection_info", "label": "get_collection_info()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2167" + "source_location": "L2168" }, { "id": "crud_collection_protocol_upsert_collection_info", "label": "upsert_collection_info()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2181" + "source_location": "L2182" }, { "id": "crud_collection_protocol_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2232" + "source_location": "L2233" }, { "id": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "label": "_migrate_sample_child_refs_on_replace()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2247" + "source_location": "L2248" }, { "id": "crud_collection_protocol_save_samples", "label": "save_samples()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2282" + "source_location": "L2283" }, { "id": "crud_collection_protocol_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2369" + "source_location": "L2370" }, { "id": "crud_collection_protocol_soft_delete_transports_for_protocol", "label": "_soft_delete_transports_for_protocol()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2388" + "source_location": "L2389" }, { "id": "crud_collection_protocol_save_sample_transports", "label": "save_sample_transports()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2404" + "source_location": "L2405" }, { "id": "crud_collection_protocol_get_storage_cert", "label": "get_storage_cert()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2462" + "source_location": "L2463" }, { "id": "crud_collection_protocol_add_months_yyyymmdd", "label": "_add_months_yyyymmdd()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2476" + "source_location": "L2477" }, { "id": "crud_collection_protocol_calc_installment_due_amounts", "label": "_calc_installment_due_amounts()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2491" + "source_location": "L2492" }, { "id": "crud_collection_protocol_align_fq_payment_details_payload", "label": "align_fq_payment_details_payload()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2511" + "source_location": "L2512" }, { "id": "crud_collection_protocol_list_payment_details", "label": "list_payment_details()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2570" + "source_location": "L2574" }, { "id": "crud_collection_protocol_upsert_payment", "label": "upsert_payment()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2593" + "source_location": "L2597" }, { "id": "crud_collection_protocol_save_payment_details", "label": "save_payment_details()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2654" + "source_location": "L2658" }, { "id": "crud_collection_protocol_upsert_storage_cert", "label": "upsert_storage_cert()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2757" + "source_location": "L2761" }, { "id": "crud_collection_protocol_fullmoon_todo_empty_dict", "label": "_fullmoon_todo_empty_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2806" + "source_location": "L2810" }, { "id": "crud_collection_protocol_fullmoon_todo_detail_dict", "label": "_fullmoon_todo_detail_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2825" + "source_location": "L2829" }, { "id": "crud_collection_protocol_fullmoon_todo_to_dict", "label": "_fullmoon_todo_to_dict()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2843" + "source_location": "L2847" }, { "id": "crud_collection_protocol_get_fullmoon_todo", "label": "get_fullmoon_todo()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2867" + "source_location": "L2871" }, { "id": "crud_collection_protocol_upsert_fullmoon_todo", "label": "upsert_fullmoon_todo()", "file_type": "code", "source_file": "crud/collection_protocol.py", - "source_location": "L2885" + "source_location": "L2889" }, { "id": "crud_collection_protocol_rationale_1", @@ -10039,102 +10102,102 @@ "source_location": "L1" }, { - "id": "crud_collection_protocol_rationale_57", + "id": "crud_collection_protocol_rationale_58", "label": "\u8fd4\u56de\u5df2\u5728\u91c7\u96c6\u534f\u8bae\u5355\u6216\u79d1\u7814\u6350\u8d60\u5355\u4e2d\u5360\u7528\u7684\u534f\u8bae\u7f16\u53f7\u96c6\u5408\uff08\u540c\u79df\u6237\u3001\u672a\u5220\u9664\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L57" + "source_location": "L58" }, { - "id": "crud_collection_protocol_rationale_91", + "id": "crud_collection_protocol_rationale_92", "label": "\u8fd4\u56de\u5df2\u5728\u91c7\u96c6\u534f\u8bae\u5355\u6216\u79d1\u7814\u6350\u8d60\u5355\u6837\u672c\u8868\u4e2d\u5360\u7528\u7684\u6837\u672c\u7f16\u7801\u96c6\u5408\uff08\u540c\u79df\u6237\u3001\u672a\u5220\u9664\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L91" + "source_location": "L92" }, { - "id": "crud_collection_protocol_rationale_127", + "id": "crud_collection_protocol_rationale_128", "label": "\u521b\u5efa/\u66f4\u65b0\u6837\u672c\u884c\u524d\u6821\u9a8c\uff1a\u6837\u672c\u7f16\u7801\u4e0d\u5f97\u5df2\u88ab\u4efb\u4e00\u4e1a\u52a1\u5355\u5360\u7528\uff08\u8f6c\u79fb\u914d\u5bf9\u5355\u8c41\u514d\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L127" + "source_location": "L128" }, { - "id": "crud_collection_protocol_rationale_181", + "id": "crud_collection_protocol_rationale_182", "label": "\u5c06 YYYYMMDD / YYYY-MM-DD \u7b49\u683c\u5f0f\u89c4\u8303\u4e3a 8 \u4f4d\u65e5\u671f\u5b57\u7b26\u4e32\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L181" + "source_location": "L182" }, { - "id": "crud_collection_protocol_rationale_200", + "id": "crud_collection_protocol_rationale_201", "label": "\u5c06\u524d\u7aef camelCase \u5b57\u6bb5\u540d\u8f6c\u4e3a\u6570\u636e\u5e93 snake_case\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L200" + "source_location": "L201" }, { - "id": "crud_collection_protocol_rationale_211", + "id": "crud_collection_protocol_rationale_212", "label": "\u4ece\u4fdd\u5b58\u8f7d\u8377\u4e2d\u53d6\u51fa\u9644\u4ef6\u5b57\u6bb5\uff08\u652f\u6301 snake/camel\u3001URL \u4e32\u6216\u9644\u4ef6\u5bf9\u8c61\u5217\u8868\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L211" + "source_location": "L212" }, { - "id": "crud_collection_protocol_rationale_222", + "id": "crud_collection_protocol_rationale_223", "label": "\u9644\u4ef6\u5217\u8868\u6216\u5b57\u7b26\u4e32 \u2192 \u9017\u53f7\u5206\u9694 URL\uff08MinIO\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L222" + "source_location": "L223" }, { - "id": "crud_collection_protocol_rationale_286", + "id": "crud_collection_protocol_rationale_287", "label": "\u9017\u53f7\u5206\u9694 URL \u2192 \u524d\u7aef\u9644\u4ef6\u5361\u7247\u7ed3\u6784\uff1b\u6709 db \u65f6\u4ece biz_attachment \u53d6\u539f\u59cb\u6587\u4ef6\u540d\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L286" + "source_location": "L287" }, { - "id": "crud_collection_protocol_rationale_561", + "id": "crud_collection_protocol_rationale_562", "label": "\u6c47\u603b\u534f\u8bae\u5355\u4e0b\u5404\u6837\u672c\u91c7\u96c6\u60c5\u51b5\uff0c\u5982\u300c1\u4e2a\u5df2\u91c7\u96c6\uff0c1\u4e2a\u672a\u91c7\u96c6\u300d\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L561" + "source_location": "L562" }, { - "id": "crud_collection_protocol_rationale_608", + "id": "crud_collection_protocol_rationale_609", "label": "\u4ece\u5165\u5e93\u653e\u884c\u5ba1\u6838\u8bb0\u5f55\u8865\u5168\u5165\u5e93\u65e5\u671f\uff08\u5386\u53f2\u6570\u636e\u53ef\u80fd\u672a\u5199\u5165\u6837\u672c storage_in_date\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L608" + "source_location": "L609" }, { - "id": "crud_collection_protocol_rationale_1355", + "id": "crud_collection_protocol_rationale_1356", "label": "\u7f34\u8d39\u660e\u7ec6\u884c \u2192 \u524d\u7aef\u5b57\u5178\uff08\u542b\u534f\u8bae\u3001\u5ba2\u6237\u3001\u8f6c\u8d26\u9644\u4ef6\uff09\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L1355" + "source_location": "L1356" }, { - "id": "crud_collection_protocol_rationale_1879", + "id": "crud_collection_protocol_rationale_1880", "label": "overdue | warn | upcoming \u2014 due \u4e3a YYYYMMDD", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L1879" + "source_location": "L1880" }, { - "id": "crud_collection_protocol_rationale_2255", + "id": "crud_collection_protocol_rationale_2256", "label": "\u534f\u8bae\u6837\u672c\u884c\u91cd\u5efa\u540e\uff0c\u5c06\u63a5\u6536/\u8d28\u68c0\u5de5\u5355\u7684 protocol_sample_id \u8fc1\u79fb\u5230\u65b0\u6837\u672c ID\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L2255" + "source_location": "L2256" }, { - "id": "crud_collection_protocol_rationale_2830", + "id": "crud_collection_protocol_rationale_2834", "label": "\u534f\u8bae\u8be6\u60c5 bundle \u7528\uff1a\u6ee1\u6708\u5f85\u529e\u5b57\u6bb5 + \u7531\u5206\u5a29\u65e5\u63a8\u7b97\u7684\u6ee1\u6708\u65e5\u671f\u3002", "file_type": "rationale", "source_file": "crud/collection_protocol.py", - "source_location": "L2830" + "source_location": "L2834" }, { "id": "crud_qc_material_usage_py", @@ -17799,63 +17862,98 @@ "label": "_avatar_url_field()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L34" + "source_location": "L39" }, { "id": "api_public_build_user_info_payload", "label": "_build_user_info_payload()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L42" + "source_location": "L48" + }, + { + "id": "api_public_build_current_user_payload", + "label": "_build_current_user_payload()", + "file_type": "code", + "source_file": "api/public.py", + "source_location": "L66" + }, + { + "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" }, { "id": "api_public_jwt_user_payload", "label": "_jwt_user_payload()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L58" + "source_location": "L96" }, { "id": "api_public_web_login_rsa_public_key", "label": "web_login_rsa_public_key()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L69" + "source_location": "L107" }, { "id": "api_public_web_login", "label": "web_login()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L76" + "source_location": "L114" }, { "id": "api_public_refresh_token", "label": "refresh_token()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L134" + "source_location": "L172" }, { "id": "api_public_logout", "label": "logout()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L196" + "source_location": "L234" }, { "id": "api_public_get_current_user_profile", "label": "get_current_user_profile()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L215" + "source_location": "L253" + }, + { + "id": "api_public_update_current_user_profile", + "label": "update_current_user_profile()", + "file_type": "code", + "source_file": "api/public.py", + "source_location": "L263" + }, + { + "id": "api_public_change_current_user_password", + "label": "change_current_user_password()", + "file_type": "code", + "source_file": "api/public.py", + "source_location": "L299" + }, + { + "id": "api_public_upload_current_user_avatar", + "label": "upload_current_user_avatar()", + "file_type": "code", + "source_file": "api/public.py", + "source_location": "L331" }, { "id": "api_public_get_web_auth_menu_codes", "label": "get_web_auth_menu_codes()", "file_type": "code", "source_file": "api/public.py", - "source_location": "L248" + "source_location": "L368" }, { "id": "api_public_rationale_1", @@ -17865,46 +17963,74 @@ "source_location": "L1" }, { - "id": "api_public_rationale_43", + "id": "api_public_rationale_40", + "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" + }, + { + "id": "api_public_rationale_49", "label": "\u4e0e web-admin `userInfo` \u5b57\u6bb5\u7ea6\u5b9a\u4e00\u81f4\u3002", "file_type": "rationale", "source_file": "api/public.py", - "source_location": "L43" + "source_location": "L49" }, { - "id": "api_public_rationale_70", + "id": "api_public_rationale_67", + "label": "\u7ec4\u88c5 current-user \u63a5\u53e3\u54cd\u5e94\u3002", + "file_type": "rationale", + "source_file": "api/public.py", + "source_location": "L67" + }, + { + "id": "api_public_rationale_108", "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": "L70" + "source_location": "L108" }, { - "id": "api_public_rationale_81", + "id": "api_public_rationale_119", "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": "L81" + "source_location": "L119" }, { - "id": "api_public_rationale_197", + "id": "api_public_rationale_235", "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": "L197" + "source_location": "L235" }, { - "id": "api_public_rationale_216", + "id": "api_public_rationale_254", "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": "L216" + "source_location": "L254" }, { - "id": "api_public_rationale_249", + "id": "api_public_rationale_268", + "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" + }, + { + "id": "api_public_rationale_336", + "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" + }, + { + "id": "api_public_rationale_369", "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": "L249" + "source_location": "L369" }, { "id": "api_material_py", @@ -24143,6 +24269,62 @@ "source_file": "services/web_auth_roles.py", "source_location": "L54" }, + { + "id": "services_protocol_payment_installment_py", + "label": "protocol_payment_installment.py", + "file_type": "code", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L1" + }, + { + "id": "services_protocol_payment_installment_add_days_yyyymmdd", + "label": "add_days_yyyymmdd()", + "file_type": "code", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L15" + }, + { + "id": "services_protocol_payment_installment_add_months_yyyymmdd", + "label": "add_months_yyyymmdd()", + "file_type": "code", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L28" + }, + { + "id": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "label": "add_interval_months_yyyymmdd()", + "file_type": "code", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L43" + }, + { + "id": "services_protocol_payment_installment_calc_fq_installment_due_date", + "label": "calc_fq_installment_due_date()", + "file_type": "code", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L63" + }, + { + "id": "services_protocol_payment_installment_rationale_1", + "label": "\u5206\u671f\u7f34\u8d39\uff1a\u5e94\u7f34\u65e5\u8ba1\u7b97\uff08\u6574\u6570\u6708\u6309\u65e5\u5386\u9012\u589e\uff0c\u5c0f\u6570\u6708\u6309 30 \u5929/\u6708\u6362\u7b97\uff09", + "file_type": "rationale", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L1" + }, + { + "id": "services_protocol_payment_installment_rationale_44", + "label": "\u6574\u6570\u90e8\u5206\u6309\u65e5\u5386\u52a0\u6708\uff0c\u5c0f\u6570\u90e8\u5206\u6309 30 \u5929/\u6708\u6362\u7b97\u4e3a\u5929\u6570\u3002", + "file_type": "rationale", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L44" + }, + { + "id": "services_protocol_payment_installment_rationale_68", + "label": "\u7b2c 1 \u671f=\u5f00\u59cb\u65f6\u95f4\uff1b\u7b2c 2 \u671f\u8d77\u5728\u95f4\u9694\u9012\u589e\u57fa\u7840\u4e0a\u63d0\u524d 10 \u5929\u3002", + "file_type": "rationale", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L68" + }, { "id": "ws_init_py", "label": "__init__.py", @@ -24680,7 +24862,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/auth.py", - "source_location": "L245", + "source_location": "L251", "weight": 1.0 }, { @@ -24689,7 +24871,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/auth.py", - "source_location": "L253", + "source_location": "L259", "weight": 1.0 }, { @@ -24698,7 +24880,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/auth.py", - "source_location": "L272", + "source_location": "L278", "weight": 1.0 }, { @@ -24869,7 +25051,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "core/auth.py", - "source_location": "L250", + "source_location": "L256", "weight": 1.0 }, { @@ -24878,7 +25060,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "core/auth.py", - "source_location": "L255", + "source_location": "L261", "weight": 1.0 }, { @@ -25328,7 +25510,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "core/config.py", - "source_location": "L144", + "source_location": "L145", "weight": 1.0 }, { @@ -26231,6 +26413,78 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "core_avatar_url_py", + "target": "typing", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "core_avatar_url_py", + "target": "app_core_config", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "core_avatar_url_py", + "target": "app_core_storage", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "core_avatar_url_py", + "target": "core_avatar_url_resolve_avatar_display_url", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "core_avatar_url_py", + "target": "core_avatar_url_extract_avatar_storage_key", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "core_avatar_url_rationale_1", + "target": "core_avatar_url_py", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "core_avatar_url_rationale_9", + "target": "core_avatar_url_resolve_avatar_display_url", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "core_avatar_url_rationale_28", + "target": "core_avatar_url_extract_avatar_storage_key", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "core/avatar_url.py", + "source_location": "L28", + "weight": 1.0 + }, { "source": "core_database_py", "target": "sqlalchemy", @@ -33622,20 +33876,38 @@ }, { "source": "schemas_auth_py", - "target": "schemas_auth_resetpasswordrequest", + "target": "schemas_auth_profileupdaterequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "schemas/auth.py", "source_location": "L54", "weight": 1.0 }, + { + "source": "schemas_auth_profileupdaterequest", + "target": "basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "schemas/auth.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "schemas_auth_py", + "target": "schemas_auth_resetpasswordrequest", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "schemas/auth.py", + "source_location": "L65", + "weight": 1.0 + }, { "source": "schemas_auth_resetpasswordrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "schemas/auth.py", - "source_location": "L54", + "source_location": "L65", "weight": 1.0 }, { @@ -33647,6 +33919,15 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "schemas_auth_rationale_55", + "target": "schemas_auth_profileupdaterequest", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "schemas/auth.py", + "source_location": "L55", + "weight": 1.0 + }, { "source": "schemas_delivery_py", "target": "pydantic", @@ -42739,13 +43020,22 @@ }, { "source": "crud_user_py", - "target": "crud_user_total_pages", + "target": "crud_user_change_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/user.py", "source_location": "L421", "weight": 1.0 }, + { + "source": "crud_user_py", + "target": "crud_user_total_pages", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "crud/user.py", + "source_location": "L440", + "weight": 1.0 + }, { "source": "crud_user_list_users", "target": "crud_user_row_to_dict", @@ -42881,6 +43171,24 @@ "source_location": "L415", "weight": 1.0 }, + { + "source": "crud_user_change_password", + "target": "crud_user_get_user", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/user.py", + "source_location": "L424", + "weight": 1.0 + }, + { + "source": "crud_user_change_password", + "target": "crud_user_hash_password", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/user.py", + "source_location": "L433", + "weight": 1.0 + }, { "source": "crud_user_rationale_1", "target": "crud_user_py", @@ -47176,7 +47484,7 @@ }, { "source": "crud_collection_protocol_py", - "target": "app_models_research_donation", + "target": "app_services_protocol_payment_installment", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", @@ -47185,20 +47493,29 @@ }, { "source": "crud_collection_protocol_py", - "target": "app_models_models", + "target": "app_models_research_donation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", "source_location": "L21", "weight": 1.0 }, + { + "source": "crud_collection_protocol_py", + "target": "app_models_models", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L22", + "weight": 1.0 + }, { "source": "crud_collection_protocol_py", "target": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L51", + "source_location": "L52", "weight": 1.0 }, { @@ -47207,7 +47524,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L85", + "source_location": "L86", "weight": 1.0 }, { @@ -47216,7 +47533,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L119", + "source_location": "L120", "weight": 1.0 }, { @@ -47225,7 +47542,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L152", + "source_location": "L153", "weight": 1.0 }, { @@ -47234,7 +47551,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L158", + "source_location": "L159", "weight": 1.0 }, { @@ -47243,7 +47560,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L162", + "source_location": "L163", "weight": 1.0 }, { @@ -47252,7 +47569,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L170", + "source_location": "L171", "weight": 1.0 }, { @@ -47261,7 +47578,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L176", + "source_location": "L177", "weight": 1.0 }, { @@ -47270,7 +47587,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L180", + "source_location": "L181", "weight": 1.0 }, { @@ -47279,7 +47596,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L199", + "source_location": "L200", "weight": 1.0 }, { @@ -47288,7 +47605,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L210", + "source_location": "L211", "weight": 1.0 }, { @@ -47297,7 +47614,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L221", + "source_location": "L222", "weight": 1.0 }, { @@ -47306,7 +47623,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L240", + "source_location": "L241", "weight": 1.0 }, { @@ -47315,7 +47632,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L249", + "source_location": "L250", "weight": 1.0 }, { @@ -47324,7 +47641,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L257", + "source_location": "L258", "weight": 1.0 }, { @@ -47333,7 +47650,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L281", + "source_location": "L282", "weight": 1.0 }, { @@ -47342,7 +47659,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L313", + "source_location": "L314", "weight": 1.0 }, { @@ -47351,7 +47668,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L321", + "source_location": "L322", "weight": 1.0 }, { @@ -47360,7 +47677,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L346", + "source_location": "L347", "weight": 1.0 }, { @@ -47369,7 +47686,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L364", + "source_location": "L365", "weight": 1.0 }, { @@ -47378,7 +47695,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L410", + "source_location": "L411", "weight": 1.0 }, { @@ -47387,7 +47704,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L432", + "source_location": "L433", "weight": 1.0 }, { @@ -47396,7 +47713,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L466", + "source_location": "L467", "weight": 1.0 }, { @@ -47405,7 +47722,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L484", + "source_location": "L485", "weight": 1.0 }, { @@ -47414,7 +47731,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L508", + "source_location": "L509", "weight": 1.0 }, { @@ -47423,7 +47740,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L528", + "source_location": "L529", "weight": 1.0 }, { @@ -47432,7 +47749,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L543", + "source_location": "L544", "weight": 1.0 }, { @@ -47441,7 +47758,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L560", + "source_location": "L561", "weight": 1.0 }, { @@ -47450,7 +47767,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L578", + "source_location": "L579", "weight": 1.0 }, { @@ -47459,7 +47776,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L595", + "source_location": "L596", "weight": 1.0 }, { @@ -47468,7 +47785,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L603", + "source_location": "L604", "weight": 1.0 }, { @@ -47477,7 +47794,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L634", + "source_location": "L635", "weight": 1.0 }, { @@ -47486,7 +47803,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L648", + "source_location": "L649", "weight": 1.0 }, { @@ -47495,7 +47812,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L781", + "source_location": "L782", "weight": 1.0 }, { @@ -47504,7 +47821,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L788", + "source_location": "L789", "weight": 1.0 }, { @@ -47513,7 +47830,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L796", + "source_location": "L797", "weight": 1.0 }, { @@ -47522,7 +47839,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L801", + "source_location": "L802", "weight": 1.0 }, { @@ -47531,7 +47848,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1036", + "source_location": "L1037", "weight": 1.0 }, { @@ -47540,7 +47857,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1055", + "source_location": "L1056", "weight": 1.0 }, { @@ -47549,7 +47866,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1069", + "source_location": "L1070", "weight": 1.0 }, { @@ -47558,7 +47875,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1192", + "source_location": "L1193", "weight": 1.0 }, { @@ -47567,7 +47884,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1252", + "source_location": "L1253", "weight": 1.0 }, { @@ -47576,7 +47893,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1289", + "source_location": "L1290", "weight": 1.0 }, { @@ -47585,7 +47902,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1308", + "source_location": "L1309", "weight": 1.0 }, { @@ -47594,7 +47911,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1348", + "source_location": "L1349", "weight": 1.0 }, { @@ -47603,7 +47920,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1382", + "source_location": "L1383", "weight": 1.0 }, { @@ -47612,7 +47929,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1419", + "source_location": "L1420", "weight": 1.0 }, { @@ -47621,7 +47938,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1465", + "source_location": "L1466", "weight": 1.0 }, { @@ -47630,7 +47947,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1504", + "source_location": "L1505", "weight": 1.0 }, { @@ -47639,7 +47956,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1549", + "source_location": "L1550", "weight": 1.0 }, { @@ -47648,7 +47965,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1597", + "source_location": "L1598", "weight": 1.0 }, { @@ -47657,7 +47974,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1636", + "source_location": "L1637", "weight": 1.0 }, { @@ -47666,7 +47983,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1658", + "source_location": "L1659", "weight": 1.0 }, { @@ -47675,7 +47992,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1670", + "source_location": "L1671", "weight": 1.0 }, { @@ -47684,7 +48001,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1685", + "source_location": "L1686", "weight": 1.0 }, { @@ -47693,7 +48010,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1703", + "source_location": "L1704", "weight": 1.0 }, { @@ -47702,7 +48019,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1723", + "source_location": "L1724", "weight": 1.0 }, { @@ -47711,7 +48028,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1747", + "source_location": "L1748", "weight": 1.0 }, { @@ -47720,7 +48037,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1774", + "source_location": "L1775", "weight": 1.0 }, { @@ -47729,7 +48046,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1791", + "source_location": "L1792", "weight": 1.0 }, { @@ -47738,7 +48055,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1798", + "source_location": "L1799", "weight": 1.0 }, { @@ -47747,7 +48064,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1878", + "source_location": "L1879", "weight": 1.0 }, { @@ -47756,7 +48073,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1890", + "source_location": "L1891", "weight": 1.0 }, { @@ -47765,7 +48082,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1943", + "source_location": "L1944", "weight": 1.0 }, { @@ -47774,7 +48091,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1986", + "source_location": "L1987", "weight": 1.0 }, { @@ -47783,7 +48100,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2051", + "source_location": "L2052", "weight": 1.0 }, { @@ -47792,7 +48109,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2075", + "source_location": "L2076", "weight": 1.0 }, { @@ -47801,7 +48118,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2089", + "source_location": "L2090", "weight": 1.0 }, { @@ -47810,7 +48127,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2167", + "source_location": "L2168", "weight": 1.0 }, { @@ -47819,7 +48136,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2181", + "source_location": "L2182", "weight": 1.0 }, { @@ -47828,7 +48145,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2232", + "source_location": "L2233", "weight": 1.0 }, { @@ -47837,7 +48154,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2247", + "source_location": "L2248", "weight": 1.0 }, { @@ -47846,7 +48163,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2282", + "source_location": "L2283", "weight": 1.0 }, { @@ -47855,7 +48172,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2369", + "source_location": "L2370", "weight": 1.0 }, { @@ -47864,7 +48181,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2388", + "source_location": "L2389", "weight": 1.0 }, { @@ -47873,7 +48190,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2404", + "source_location": "L2405", "weight": 1.0 }, { @@ -47882,7 +48199,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2462", + "source_location": "L2463", "weight": 1.0 }, { @@ -47891,7 +48208,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2476", + "source_location": "L2477", "weight": 1.0 }, { @@ -47900,7 +48217,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2491", + "source_location": "L2492", "weight": 1.0 }, { @@ -47909,7 +48226,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2511", + "source_location": "L2512", "weight": 1.0 }, { @@ -47918,7 +48235,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2570", + "source_location": "L2574", "weight": 1.0 }, { @@ -47927,7 +48244,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2593", + "source_location": "L2597", "weight": 1.0 }, { @@ -47936,7 +48253,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2654", + "source_location": "L2658", "weight": 1.0 }, { @@ -47945,7 +48262,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2757", + "source_location": "L2761", "weight": 1.0 }, { @@ -47954,7 +48271,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2806", + "source_location": "L2810", "weight": 1.0 }, { @@ -47963,7 +48280,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2825", + "source_location": "L2829", "weight": 1.0 }, { @@ -47972,7 +48289,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2843", + "source_location": "L2847", "weight": 1.0 }, { @@ -47981,7 +48298,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2867", + "source_location": "L2871", "weight": 1.0 }, { @@ -47990,7 +48307,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2885", + "source_location": "L2889", "weight": 1.0 }, { @@ -47999,7 +48316,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L130", + "source_location": "L131", "weight": 1.0 }, { @@ -48008,7 +48325,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L136", + "source_location": "L137", "weight": 1.0 }, { @@ -48017,7 +48334,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L215", + "source_location": "L216", "weight": 1.0 }, { @@ -48026,7 +48343,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L262", + "source_location": "L263", "weight": 1.0 }, { @@ -48035,7 +48352,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L294", + "source_location": "L295", "weight": 1.0 }, { @@ -48044,7 +48361,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L303", + "source_location": "L304", "weight": 1.0 }, { @@ -48053,7 +48370,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L329", + "source_location": "L330", "weight": 1.0 }, { @@ -48062,7 +48379,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L351", + "source_location": "L352", "weight": 1.0 }, { @@ -48071,7 +48388,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L359", + "source_location": "L360", "weight": 1.0 }, { @@ -48080,7 +48397,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L388", + "source_location": "L389", "weight": 1.0 }, { @@ -48089,7 +48406,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L390", + "source_location": "L391", "weight": 1.0 }, { @@ -48098,7 +48415,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L427", + "source_location": "L428", "weight": 1.0 }, { @@ -48107,7 +48424,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L450", + "source_location": "L451", "weight": 1.0 }, { @@ -48116,7 +48433,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L455", + "source_location": "L456", "weight": 1.0 }, { @@ -48125,7 +48442,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L474", + "source_location": "L475", "weight": 1.0 }, { @@ -48134,7 +48451,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L491", + "source_location": "L492", "weight": 1.0 }, { @@ -48143,7 +48460,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L503", + "source_location": "L504", "weight": 1.0 }, { @@ -48152,25 +48469,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L517", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_transport_to_dict", - "target": "crud_collection_protocol_fmt_dt", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L518", "weight": 1.0 }, + { + "source": "crud_collection_protocol_transport_to_dict", + "target": "crud_collection_protocol_fmt_dt", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L519", + "weight": 1.0 + }, { "source": "crud_collection_protocol_storage_cert_to_dict", "target": "crud_collection_protocol_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L538", + "source_location": "L539", "weight": 1.0 }, { @@ -48179,7 +48496,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L556", + "source_location": "L557", "weight": 1.0 }, { @@ -48188,7 +48505,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L722", + "source_location": "L723", "weight": 1.0 }, { @@ -48197,7 +48514,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L724", + "source_location": "L725", "weight": 1.0 }, { @@ -48206,7 +48523,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L726", + "source_location": "L727", "weight": 1.0 }, { @@ -48215,7 +48532,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L730", + "source_location": "L731", "weight": 1.0 }, { @@ -48224,7 +48541,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L739", + "source_location": "L740", "weight": 1.0 }, { @@ -48233,7 +48550,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L741", + "source_location": "L742", "weight": 1.0 }, { @@ -48242,7 +48559,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L748", + "source_location": "L749", "weight": 1.0 }, { @@ -48251,7 +48568,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L760", + "source_location": "L761", "weight": 1.0 }, { @@ -48260,7 +48577,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L763", + "source_location": "L764", "weight": 1.0 }, { @@ -48269,7 +48586,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L764", + "source_location": "L765", "weight": 1.0 }, { @@ -48278,7 +48595,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L908", + "source_location": "L909", "weight": 1.0 }, { @@ -48287,7 +48604,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L919", + "source_location": "L920", "weight": 1.0 }, { @@ -48296,7 +48613,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L935", + "source_location": "L936", "weight": 1.0 }, { @@ -48305,7 +48622,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L955", + "source_location": "L956", "weight": 1.0 }, { @@ -48314,7 +48631,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1031", + "source_location": "L1032", "weight": 1.0 }, { @@ -48323,7 +48640,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1076", + "source_location": "L1077", "weight": 1.0 }, { @@ -48332,21 +48649,12 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1081", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_get_party_customer", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1082", "weight": 1.0 }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_get_collection_info", + "target": "crud_collection_protocol_get_party_customer", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", @@ -48355,7 +48663,7 @@ }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_list_samples", + "target": "crud_collection_protocol_get_collection_info", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", @@ -48364,7 +48672,7 @@ }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_get_storage_cert", + "target": "crud_collection_protocol_list_samples", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", @@ -48373,7 +48681,7 @@ }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_protocol_to_dict", + "target": "crud_collection_protocol_get_storage_cert", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", @@ -48382,20 +48690,29 @@ }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_collection_info_to_dict", + "target": "crud_collection_protocol_protocol_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", "source_location": "L1087", "weight": 1.0 }, + { + "source": "crud_collection_protocol_get_protocol_detail_bundle", + "target": "crud_collection_protocol_collection_info_to_dict", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1088", + "weight": 1.0 + }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_user_nick_name_map", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1093", + "source_location": "L1094", "weight": 1.0 }, { @@ -48404,7 +48721,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1116", + "source_location": "L1117", "weight": 1.0 }, { @@ -48413,7 +48730,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1117", + "source_location": "L1118", "weight": 1.0 }, { @@ -48422,25 +48739,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1119", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "crud_collection_protocol_transport_to_dict", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1120", "weight": 1.0 }, + { + "source": "crud_collection_protocol_get_protocol_detail_bundle", + "target": "crud_collection_protocol_transport_to_dict", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1121", + "weight": 1.0 + }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_collection_protocol_sample_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1153", + "source_location": "L1154", "weight": 1.0 }, { @@ -48449,7 +48766,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1161", + "source_location": "L1162", "weight": 1.0 }, { @@ -48458,7 +48775,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1162", + "source_location": "L1163", "weight": 1.0 }, { @@ -48467,7 +48784,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1164", + "source_location": "L1165", "weight": 1.0 }, { @@ -48476,7 +48793,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1165", + "source_location": "L1166", "weight": 1.0 }, { @@ -48485,7 +48802,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1167", + "source_location": "L1168", "weight": 1.0 }, { @@ -48494,7 +48811,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1170", + "source_location": "L1171", "weight": 1.0 }, { @@ -48503,7 +48820,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1242", + "source_location": "L1243", "weight": 1.0 }, { @@ -48512,7 +48829,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1261", + "source_location": "L1262", "weight": 1.0 }, { @@ -48521,7 +48838,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1338", + "source_location": "L1339", "weight": 1.0 }, { @@ -48530,7 +48847,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1359", + "source_location": "L1360", "weight": 1.0 }, { @@ -48539,7 +48856,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1364", + "source_location": "L1365", "weight": 1.0 }, { @@ -48548,7 +48865,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1375", + "source_location": "L1376", "weight": 1.0 }, { @@ -48557,25 +48874,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1395", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_list_receipt_confirm_details", - "target": "crud_collection_protocol_apply_payment_detail_list_filters", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1396", "weight": 1.0 }, + { + "source": "crud_collection_protocol_list_receipt_confirm_details", + "target": "crud_collection_protocol_apply_payment_detail_list_filters", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1397", + "weight": 1.0 + }, { "source": "crud_collection_protocol_list_receipt_confirm_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1416", + "source_location": "L1417", "weight": 1.0 }, { @@ -48584,25 +48901,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1432", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_list_receipt_confirmed_details", - "target": "crud_collection_protocol_apply_payment_detail_list_filters", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1433", "weight": 1.0 }, + { + "source": "crud_collection_protocol_list_receipt_confirmed_details", + "target": "crud_collection_protocol_apply_payment_detail_list_filters", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1434", + "weight": 1.0 + }, { "source": "crud_collection_protocol_list_receipt_confirmed_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1460", + "source_location": "L1461", "weight": 1.0 }, { @@ -48611,25 +48928,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1517", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_list_refund_confirm_details", - "target": "crud_collection_protocol_apply_payment_detail_list_filters", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1518", "weight": 1.0 }, + { + "source": "crud_collection_protocol_list_refund_confirm_details", + "target": "crud_collection_protocol_apply_payment_detail_list_filters", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1519", + "weight": 1.0 + }, { "source": "crud_collection_protocol_list_refund_confirm_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1544", + "source_location": "L1545", "weight": 1.0 }, { @@ -48638,25 +48955,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1562", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_list_refund_confirmed_details", - "target": "crud_collection_protocol_apply_payment_detail_list_filters", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1563", "weight": 1.0 }, + { + "source": "crud_collection_protocol_list_refund_confirmed_details", + "target": "crud_collection_protocol_apply_payment_detail_list_filters", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1564", + "weight": 1.0 + }, { "source": "crud_collection_protocol_list_refund_confirmed_details", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1592", + "source_location": "L1593", "weight": 1.0 }, { @@ -48665,25 +48982,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1677", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_submit_receipt_finance", - "target": "crud_collection_protocol_apply_submit_receipt_finance", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1678", "weight": 1.0 }, + { + "source": "crud_collection_protocol_submit_receipt_finance", + "target": "crud_collection_protocol_apply_submit_receipt_finance", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1679", + "weight": 1.0 + }, { "source": "crud_collection_protocol_batch_submit_receipt_finance", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1696", + "source_location": "L1697", "weight": 1.0 }, { @@ -48692,7 +49009,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1697", + "source_location": "L1698", "weight": 1.0 }, { @@ -48701,25 +49018,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1733", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_submit_refund_finance", - "target": "crud_collection_protocol_apply_submit_refund_finance", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L1734", "weight": 1.0 }, + { + "source": "crud_collection_protocol_submit_refund_finance", + "target": "crud_collection_protocol_apply_submit_refund_finance", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L1735", + "weight": 1.0 + }, { "source": "crud_collection_protocol_batch_submit_refund_finance", "target": "crud_collection_protocol_get_payment_detail_or_raise", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1761", + "source_location": "L1762", "weight": 1.0 }, { @@ -48728,7 +49045,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1762", + "source_location": "L1763", "weight": 1.0 }, { @@ -48737,7 +49054,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1832", + "source_location": "L1833", "weight": 1.0 }, { @@ -48746,7 +49063,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1857", + "source_location": "L1858", "weight": 1.0 }, { @@ -48755,7 +49072,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1863", + "source_location": "L1864", "weight": 1.0 }, { @@ -48764,7 +49081,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1901", + "source_location": "L1902", "weight": 1.0 }, { @@ -48773,7 +49090,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1902", + "source_location": "L1903", "weight": 1.0 }, { @@ -48782,7 +49099,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1914", + "source_location": "L1915", "weight": 1.0 }, { @@ -48791,7 +49108,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1916", + "source_location": "L1917", "weight": 1.0 }, { @@ -48800,7 +49117,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2008", + "source_location": "L2009", "weight": 1.0 }, { @@ -48809,7 +49126,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2058", + "source_location": "L2059", "weight": 1.0 }, { @@ -48818,25 +49135,25 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2096", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_upsert_party_customer", - "target": "crud_collection_protocol_get_party_customer", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", "source_location": "L2097", "weight": 1.0 }, + { + "source": "crud_collection_protocol_upsert_party_customer", + "target": "crud_collection_protocol_get_party_customer", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "crud/collection_protocol.py", + "source_location": "L2098", + "weight": 1.0 + }, { "source": "crud_collection_protocol_upsert_party_customer", "target": "crud_collection_protocol_optional_decimal", "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2118", + "source_location": "L2119", "weight": 1.0 }, { @@ -48845,7 +49162,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2188", + "source_location": "L2189", "weight": 1.0 }, { @@ -48854,7 +49171,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2189", + "source_location": "L2190", "weight": 1.0 }, { @@ -48863,7 +49180,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2289", + "source_location": "L2290", "weight": 1.0 }, { @@ -48872,7 +49189,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2302", + "source_location": "L2303", "weight": 1.0 }, { @@ -48881,7 +49198,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2317", + "source_location": "L2318", "weight": 1.0 }, { @@ -48890,7 +49207,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2355", + "source_location": "L2356", "weight": 1.0 }, { @@ -48899,7 +49216,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2365", + "source_location": "L2366", "weight": 1.0 }, { @@ -48908,7 +49225,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2394", + "source_location": "L2395", "weight": 1.0 }, { @@ -48917,7 +49234,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2412", + "source_location": "L2413", "weight": 1.0 }, { @@ -48926,7 +49243,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2416", + "source_location": "L2417", "weight": 1.0 }, { @@ -48935,7 +49252,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2518", + "source_location": "L2519", "weight": 1.0 }, { @@ -48944,16 +49261,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2538", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_align_fq_payment_details_payload", - "target": "crud_collection_protocol_add_months_yyyymmdd", - "relation": "calls", - "confidence": "EXTRACTED", - "source_file": "crud/collection_protocol.py", - "source_location": "L2551", + "source_location": "L2539", "weight": 1.0 }, { @@ -48962,7 +49270,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2600", + "source_location": "L2604", "weight": 1.0 }, { @@ -48971,7 +49279,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2601", + "source_location": "L2605", "weight": 1.0 }, { @@ -48980,7 +49288,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2661", + "source_location": "L2665", "weight": 1.0 }, { @@ -48989,7 +49297,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2682", + "source_location": "L2686", "weight": 1.0 }, { @@ -48998,7 +49306,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2683", + "source_location": "L2687", "weight": 1.0 }, { @@ -49007,7 +49315,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2740", + "source_location": "L2744", "weight": 1.0 }, { @@ -49016,7 +49324,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2764", + "source_location": "L2768", "weight": 1.0 }, { @@ -49025,7 +49333,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2765", + "source_location": "L2769", "weight": 1.0 }, { @@ -49034,7 +49342,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2831", + "source_location": "L2835", "weight": 1.0 }, { @@ -49043,7 +49351,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2831", + "source_location": "L2835", "weight": 1.0 }, { @@ -49052,7 +49360,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2858", + "source_location": "L2862", "weight": 1.0 }, { @@ -49061,7 +49369,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2862", + "source_location": "L2866", "weight": 1.0 }, { @@ -49070,7 +49378,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2892", + "source_location": "L2896", "weight": 1.0 }, { @@ -49079,7 +49387,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2893", + "source_location": "L2897", "weight": 1.0 }, { @@ -49092,129 +49400,129 @@ "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L57", + "source_location": "L58", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L91", + "source_location": "L92", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "crud_collection_protocol_validate_sample_codes_not_used", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L127", + "source_location": "L128", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "crud_collection_protocol_normalize_yyyymmdd_date", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L181", + "source_location": "L182", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "crud_collection_protocol_normalize_fields", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L200", + "source_location": "L201", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "crud_collection_protocol_pop_attachment_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L211", + "source_location": "L212", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "crud_collection_protocol_attachments_to_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L222", + "source_location": "L223", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "crud_collection_protocol_urls_to_attachment_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L286", + "source_location": "L287", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "crud_collection_protocol_format_sample_collect_summary", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L561", + "source_location": "L562", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "crud_collection_protocol_load_protocol_storage_in_date_map", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L608", + "source_location": "L609", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "crud_collection_protocol_rows_to_payment_detail_dicts", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1355", + "source_location": "L1356", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "crud_collection_protocol_classify_installment_warning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L1879", + "source_location": "L1880", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "crud_collection_protocol_migrate_sample_child_refs_on_replace", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2255", + "source_location": "L2256", "weight": 1.0 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "crud_collection_protocol_fullmoon_todo_detail_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "crud/collection_protocol.py", - "source_location": "L2830", + "source_location": "L2834", "weight": 1.0 }, { @@ -69341,13 +69649,22 @@ "source_location": "L178", "weight": 1.0 }, + { + "source": "api_public_py", + "target": "os", + "relation": "imports", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L2", + "weight": 1.0 + }, { "source": "api_public_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L2", + "source_location": "L3", "weight": 1.0 }, { @@ -69356,7 +69673,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L4", + "source_location": "L5", "weight": 1.0 }, { @@ -69365,7 +69682,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L5", + "source_location": "L6", "weight": 1.0 }, { @@ -69374,7 +69691,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L6", + "source_location": "L7", "weight": 1.0 }, { @@ -69383,7 +69700,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L8", + "source_location": "L9", "weight": 1.0 }, { @@ -69392,7 +69709,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L9", + "source_location": "L10", "weight": 1.0 }, { @@ -69401,7 +69718,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L10", + "source_location": "L11", "weight": 1.0 }, { @@ -69410,7 +69727,7 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L23", + "source_location": "L24", "weight": 1.0 }, { @@ -69419,21 +69736,12 @@ "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L24", - "weight": 1.0 - }, - { - "source": "api_public_py", - "target": "app_models_models", - "relation": "imports_from", - "confidence": "EXTRACTED", - "source_file": "api/public.py", "source_location": "L25", "weight": 1.0 }, { "source": "api_public_py", - "target": "app_crud_user", + "target": "app_core_storage", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", @@ -69442,7 +69750,7 @@ }, { "source": "api_public_py", - "target": "app_core_utils", + "target": "app_core_avatar_url", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", @@ -69451,7 +69759,7 @@ }, { "source": "api_public_py", - "target": "app_core", + "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", @@ -69460,20 +69768,65 @@ }, { "source": "api_public_py", - "target": "app_services_web_auth_roles", + "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "api/public.py", "source_location": "L29", "weight": 1.0 }, + { + "source": "api_public_py", + "target": "app_core_utils", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "app_core", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "app_services_web_auth_roles", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "app_schemas_auth", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "app_crud_user", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L34", + "weight": 1.0 + }, { "source": "api_public_py", "target": "api_public_avatar_url_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L34", + "source_location": "L39", "weight": 1.0 }, { @@ -69482,7 +69835,25 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L42", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "api_public_build_current_user_payload", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "api_public_resolve_current_user_from_request", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L88", "weight": 1.0 }, { @@ -69491,7 +69862,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L58", + "source_location": "L96", "weight": 1.0 }, { @@ -69500,7 +69871,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L69", + "source_location": "L107", "weight": 1.0 }, { @@ -69509,7 +69880,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L76", + "source_location": "L114", "weight": 1.0 }, { @@ -69518,7 +69889,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L134", + "source_location": "L172", "weight": 1.0 }, { @@ -69527,7 +69898,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L196", + "source_location": "L234", "weight": 1.0 }, { @@ -69536,7 +69907,34 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L215", + "source_location": "L253", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "api_public_update_current_user_profile", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "api_public_change_current_user_password", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L299", + "weight": 1.0 + }, + { + "source": "api_public_py", + "target": "api_public_upload_current_user_avatar", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L331", "weight": 1.0 }, { @@ -69545,7 +69943,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L248", + "source_location": "L368", "weight": 1.0 }, { @@ -69554,7 +69952,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L54", + "source_location": "L62", "weight": 1.0 }, { @@ -69563,7 +69961,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L106", + "source_location": "L144", "weight": 1.0 }, { @@ -69572,7 +69970,7 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L128", + "source_location": "L166", "weight": 1.0 }, { @@ -69581,7 +69979,61 @@ "relation": "calls", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L168", + "source_location": "L206", + "weight": 1.0 + }, + { + "source": "api_public_get_current_user_profile", + "target": "api_public_resolve_current_user_from_request", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "api_public_get_current_user_profile", + "target": "api_public_build_current_user_payload", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L257", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "api_public_resolve_current_user_from_request", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L270", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "api_public_build_user_info_payload", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "api_public_change_current_user_password", + "target": "api_public_resolve_current_user_from_request", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L306", + "weight": 1.0 + }, + { + "source": "api_public_upload_current_user_avatar", + "target": "api_public_resolve_current_user_from_request", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L338", "weight": 1.0 }, { @@ -69594,57 +70046,93 @@ "weight": 1.0 }, { - "source": "api_public_rationale_43", + "source": "api_public_rationale_40", + "target": "api_public_avatar_url_field", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "api_public_rationale_49", "target": "api_public_build_user_info_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L43", + "source_location": "L49", "weight": 1.0 }, { - "source": "api_public_rationale_70", + "source": "api_public_rationale_67", + "target": "api_public_build_current_user_payload", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "api_public_rationale_108", "target": "api_public_web_login_rsa_public_key", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L70", + "source_location": "L108", "weight": 1.0 }, { - "source": "api_public_rationale_81", + "source": "api_public_rationale_119", "target": "api_public_web_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L81", + "source_location": "L119", "weight": 1.0 }, { - "source": "api_public_rationale_197", + "source": "api_public_rationale_235", "target": "api_public_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L197", + "source_location": "L235", "weight": 1.0 }, { - "source": "api_public_rationale_216", + "source": "api_public_rationale_254", "target": "api_public_get_current_user_profile", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L216", + "source_location": "L254", "weight": 1.0 }, { - "source": "api_public_rationale_249", + "source": "api_public_rationale_268", + "target": "api_public_update_current_user_profile", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L268", + "weight": 1.0 + }, + { + "source": "api_public_rationale_336", + "target": "api_public_upload_current_user_avatar", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "api/public.py", + "source_location": "L336", + "weight": 1.0 + }, + { + "source": "api_public_rationale_369", "target": "api_public_get_web_auth_menu_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "api/public.py", - "source_location": "L249", + "source_location": "L369", "weight": 1.0 }, { @@ -86846,6 +87334,132 @@ "source_location": "L54", "weight": 1.0 }, + { + "source": "services_protocol_payment_installment_py", + "target": "calendar", + "relation": "imports", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_py", + "target": "decimal", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_py", + "target": "typing", + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_py", + "target": "services_protocol_payment_installment_add_days_yyyymmdd", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_py", + "target": "services_protocol_payment_installment_add_months_yyyymmdd", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_py", + "target": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_py", + "target": "services_protocol_payment_installment_calc_fq_installment_due_date", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "target": "services_protocol_payment_installment_add_months_yyyymmdd", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "target": "services_protocol_payment_installment_add_days_yyyymmdd", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_calc_fq_installment_due_date", + "target": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_calc_fq_installment_due_date", + "target": "services_protocol_payment_installment_add_days_yyyymmdd", + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_rationale_1", + "target": "services_protocol_payment_installment_py", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_rationale_44", + "target": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_rationale_68", + "target": "services_protocol_payment_installment_calc_fq_installment_due_date", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "services/protocol_payment_installment.py", + "source_location": "L68", + "weight": 1.0 + }, { "source": "app_main_rationale_81", "target": "core_api_request_log_middleware_apirequestlogmiddleware", @@ -109244,133 +109858,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_research_donation_bizresearchdonation", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { @@ -109379,133 +109993,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_research_donation_bizresearchdonationsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L20", + "source_location": "L21", "weight": 0.8 }, { @@ -109514,133 +110128,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizattachment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -109649,133 +110263,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizcollectionprotocol", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -109784,133 +110398,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolaudit", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -109919,133 +110533,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolcollectioninfo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110054,133 +110668,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolfullmoontodo", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110189,133 +110803,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolpartycustomer", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110324,133 +110938,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolpayment", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110459,133 +111073,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolpaymentdetail", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110594,133 +111208,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolsample", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110729,133 +111343,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolsampletransport", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110864,133 +111478,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizprotocolstoragecert", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -110999,133 +111613,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizqcworkorder", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -111134,133 +111748,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizsamplereception", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -111269,133 +111883,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizstoragereleasereview", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -111404,133 +112018,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizcollectionregion", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -111539,133 +112153,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizcollectionhospital", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -111674,133 +112288,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_bizcellsampletype", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -111809,133 +112423,133 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_57", + "source": "crud_collection_protocol_rationale_58", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_91", + "source": "crud_collection_protocol_rationale_92", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_127", + "source": "crud_collection_protocol_rationale_128", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_181", + "source": "crud_collection_protocol_rationale_182", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_200", + "source": "crud_collection_protocol_rationale_201", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_211", + "source": "crud_collection_protocol_rationale_212", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_222", + "source": "crud_collection_protocol_rationale_223", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_286", + "source": "crud_collection_protocol_rationale_287", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_561", + "source": "crud_collection_protocol_rationale_562", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_608", + "source": "crud_collection_protocol_rationale_609", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1355", + "source": "crud_collection_protocol_rationale_1356", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_1879", + "source": "crud_collection_protocol_rationale_1880", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2255", + "source": "crud_collection_protocol_rationale_2256", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { - "source": "crud_collection_protocol_rationale_2830", + "source": "crud_collection_protocol_rationale_2834", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "crud/collection_protocol.py", - "source_location": "L21", + "source_location": "L22", "weight": 0.8 }, { @@ -127757,61 +128371,196 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", "weight": 0.8 }, { - "source": "api_public_rationale_43", + "source": "api_public_rationale_40", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", "weight": 0.8 }, { - "source": "api_public_rationale_70", + "source": "api_public_rationale_49", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", "weight": 0.8 }, { - "source": "api_public_rationale_81", + "source": "api_public_rationale_67", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", "weight": 0.8 }, { - "source": "api_public_rationale_197", + "source": "api_public_rationale_108", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", "weight": 0.8 }, { - "source": "api_public_rationale_216", + "source": "api_public_rationale_119", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", "weight": 0.8 }, { - "source": "api_public_rationale_249", + "source": "api_public_rationale_235", "target": "models_models_sysuser", "relation": "uses", "confidence": "INFERRED", "source_file": "api/public.py", - "source_location": "L25", + "source_location": "L28", + "weight": 0.8 + }, + { + "source": "api_public_rationale_254", + "target": "models_models_sysuser", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L28", + "weight": 0.8 + }, + { + "source": "api_public_rationale_268", + "target": "models_models_sysuser", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L28", + "weight": 0.8 + }, + { + "source": "api_public_rationale_336", + "target": "models_models_sysuser", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L28", + "weight": 0.8 + }, + { + "source": "api_public_rationale_369", + "target": "models_models_sysuser", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L28", + "weight": 0.8 + }, + { + "source": "api_public_rationale_1", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_40", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_49", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_67", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_108", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_119", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_235", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_254", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_268", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_336", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", + "weight": 0.8 + }, + { + "source": "api_public_rationale_369", + "target": "schemas_auth_profileupdaterequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "api/public.py", + "source_location": "L33", "weight": 0.8 }, { @@ -141157,6 +141906,16 @@ "source_location": "L224", "weight": 1.0 }, + { + "source": "core_auth_get_current_user_by_token", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "core/auth.py", + "source_location": "L231", + "weight": 1.0 + }, { "source": "core_auth_get_current_user_simple", "target": "crud_base_crudbase_get", @@ -141164,7 +141923,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "core/auth.py", - "source_location": "L256", + "source_location": "L262", "weight": 1.0 }, { @@ -141174,7 +141933,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "core/auth.py", - "source_location": "L274", + "source_location": "L280", "weight": 1.0 }, { @@ -141417,6 +142176,26 @@ "source_location": "L251", "weight": 1.0 }, + { + "source": "core_avatar_url_resolve_avatar_display_url", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "core/avatar_url.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "core_avatar_url_resolve_avatar_display_url", + "target": "core_storage_miniostorage_get_url", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "core/avatar_url.py", + "source_location": "L19", + "weight": 1.0 + }, { "source": "core_database_auto_fill_create_dept_id", "target": "crud_base_crudbase_get", @@ -142967,6 +143746,16 @@ "source_location": "L317", "weight": 1.0 }, + { + "source": "crud_user_change_password", + "target": "core_security_verify_password", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/user.py", + "source_location": "L428", + "weight": 1.0 + }, { "source": "crud_production_work_order_wo_to_dict", "target": "crud_base_crudbase_get", @@ -144984,7 +145773,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L71", + "source_location": "L72", "weight": 1.0 }, { @@ -144994,7 +145783,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L105", + "source_location": "L106", "weight": 1.0 }, { @@ -145004,7 +145793,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L131", + "source_location": "L132", "weight": 1.0 }, { @@ -145014,7 +145803,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L139", + "source_location": "L140", "weight": 1.0 }, { @@ -145024,7 +145813,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L173", + "source_location": "L174", "weight": 1.0 }, { @@ -145034,7 +145823,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L184", + "source_location": "L185", "weight": 1.0 }, { @@ -145044,7 +145833,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L205", + "source_location": "L206", "weight": 1.0 }, { @@ -145054,7 +145843,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L205", + "source_location": "L206", "weight": 1.0 }, { @@ -145064,7 +145853,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L231", + "source_location": "L232", "weight": 1.0 }, { @@ -145074,7 +145863,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L449", + "source_location": "L450", "weight": 1.0 }, { @@ -145084,7 +145873,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L550", + "source_location": "L551", "weight": 1.0 }, { @@ -145094,7 +145883,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L583", + "source_location": "L584", "weight": 1.0 }, { @@ -145104,7 +145893,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L597", + "source_location": "L598", "weight": 1.0 }, { @@ -145114,7 +145903,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L628", + "source_location": "L629", "weight": 1.0 }, { @@ -145124,7 +145913,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L684", + "source_location": "L685", "weight": 1.0 }, { @@ -145134,7 +145923,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L733", + "source_location": "L734", "weight": 1.0 }, { @@ -145144,7 +145933,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L883", + "source_location": "L884", "weight": 1.0 }, { @@ -145154,7 +145943,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L922", + "source_location": "L923", "weight": 1.0 }, { @@ -145164,7 +145953,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L969", + "source_location": "L970", "weight": 1.0 }, { @@ -145174,19 +145963,19 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1089", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_get_protocol_detail_bundle", - "target": "str", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "crud/collection_protocol.py", "source_location": "L1090", "weight": 1.0 }, + { + "source": "crud_collection_protocol_get_protocol_detail_bundle", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/collection_protocol.py", + "source_location": "L1091", + "weight": 1.0 + }, { "source": "crud_collection_protocol_get_protocol_detail_bundle", "target": "crud_sample_reception_get_receptions_map_for_samples", @@ -145194,7 +145983,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1124", + "source_location": "L1125", "weight": 1.0 }, { @@ -145204,7 +145993,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1133", + "source_location": "L1134", "weight": 1.0 }, { @@ -145214,7 +146003,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1139", + "source_location": "L1140", "weight": 1.0 }, { @@ -145224,7 +146013,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1145", + "source_location": "L1146", "weight": 1.0 }, { @@ -145234,7 +146023,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1225", + "source_location": "L1226", "weight": 1.0 }, { @@ -145244,7 +146033,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1227", + "source_location": "L1228", "weight": 1.0 }, { @@ -145254,7 +146043,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1245", + "source_location": "L1246", "weight": 1.0 }, { @@ -145264,7 +146053,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1267", + "source_location": "L1268", "weight": 1.0 }, { @@ -145274,7 +146063,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1268", + "source_location": "L1269", "weight": 1.0 }, { @@ -145284,7 +146073,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1363", + "source_location": "L1364", "weight": 1.0 }, { @@ -145294,32 +146083,22 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1406", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_list_receipt_confirm_details", - "target": "crud_base_crudbase_count", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "crud/collection_protocol.py", "source_location": "L1407", "weight": 1.0 }, { - "source": "crud_collection_protocol_list_receipt_confirmed_details", - "target": "core_data_scope_apply_data_scope", + "source": "crud_collection_protocol_list_receipt_confirm_details", + "target": "crud_base_crudbase_count", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1443", + "source_location": "L1408", "weight": 1.0 }, { "source": "crud_collection_protocol_list_receipt_confirmed_details", - "target": "crud_base_crudbase_count", + "target": "core_data_scope_apply_data_scope", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -145328,18 +146107,18 @@ "weight": 1.0 }, { - "source": "crud_collection_protocol_list_refund_confirm_details", - "target": "core_data_scope_apply_data_scope", + "source": "crud_collection_protocol_list_receipt_confirmed_details", + "target": "crud_base_crudbase_count", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1528", + "source_location": "L1445", "weight": 1.0 }, { "source": "crud_collection_protocol_list_refund_confirm_details", - "target": "crud_base_crudbase_count", + "target": "core_data_scope_apply_data_scope", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, @@ -145347,6 +146126,16 @@ "source_location": "L1529", "weight": 1.0 }, + { + "source": "crud_collection_protocol_list_refund_confirm_details", + "target": "crud_base_crudbase_count", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/collection_protocol.py", + "source_location": "L1530", + "weight": 1.0 + }, { "source": "crud_collection_protocol_list_refund_confirmed_details", "target": "core_data_scope_apply_data_scope", @@ -145354,7 +146143,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1573", + "source_location": "L1574", "weight": 1.0 }, { @@ -145364,7 +146153,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1574", + "source_location": "L1575", "weight": 1.0 }, { @@ -145374,7 +146163,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1692", + "source_location": "L1693", "weight": 1.0 }, { @@ -145384,7 +146173,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1713", + "source_location": "L1714", "weight": 1.0 }, { @@ -145394,7 +146183,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1757", + "source_location": "L1758", "weight": 1.0 }, { @@ -145404,19 +146193,19 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1841", - "weight": 1.0 - }, - { - "source": "crud_collection_protocol_list_payment_details_page", - "target": "crud_base_crudbase_count", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "crud/collection_protocol.py", "source_location": "L1842", "weight": 1.0 }, + { + "source": "crud_collection_protocol_list_payment_details_page", + "target": "crud_base_crudbase_count", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/collection_protocol.py", + "source_location": "L1843", + "weight": 1.0 + }, { "source": "crud_collection_protocol_list_payment_details_page", "target": "crud_base_crudbase_get", @@ -145424,7 +146213,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1861", + "source_location": "L1862", "weight": 1.0 }, { @@ -145434,7 +146223,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1907", + "source_location": "L1908", "weight": 1.0 }, { @@ -145444,7 +146233,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1958", + "source_location": "L1959", "weight": 1.0 }, { @@ -145454,7 +146243,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1961", + "source_location": "L1962", "weight": 1.0 }, { @@ -145464,7 +146253,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1962", + "source_location": "L1963", "weight": 1.0 }, { @@ -145474,7 +146263,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L1963", + "source_location": "L1964", "weight": 1.0 }, { @@ -145484,7 +146273,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2121", + "source_location": "L2122", "weight": 1.0 }, { @@ -145494,7 +146283,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2133", + "source_location": "L2134", "weight": 1.0 }, { @@ -145504,7 +146293,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2134", + "source_location": "L2135", "weight": 1.0 }, { @@ -145514,7 +146303,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2138", + "source_location": "L2139", "weight": 1.0 }, { @@ -145524,7 +146313,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2207", + "source_location": "L2208", "weight": 1.0 }, { @@ -145534,7 +146323,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2208", + "source_location": "L2209", "weight": 1.0 }, { @@ -145544,7 +146333,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2212", + "source_location": "L2213", "weight": 1.0 }, { @@ -145554,7 +146343,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2272", + "source_location": "L2273", "weight": 1.0 }, { @@ -145564,7 +146353,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2318", + "source_location": "L2319", "weight": 1.0 }, { @@ -145574,7 +146363,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2319", + "source_location": "L2320", "weight": 1.0 }, { @@ -145584,7 +146373,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2323", + "source_location": "L2324", "weight": 1.0 }, { @@ -145594,7 +146383,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2340", + "source_location": "L2341", "weight": 1.0 }, { @@ -145604,7 +146393,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2417", + "source_location": "L2418", "weight": 1.0 }, { @@ -145614,7 +146403,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2427", + "source_location": "L2428", "weight": 1.0 }, { @@ -145624,7 +146413,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2431", + "source_location": "L2432", "weight": 1.0 }, { @@ -145634,7 +146423,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2435", + "source_location": "L2436", "weight": 1.0 }, { @@ -145644,7 +146433,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2436", + "source_location": "L2437", "weight": 1.0 }, { @@ -145654,7 +146443,17 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2524", + "source_location": "L2525", + "weight": 1.0 + }, + { + "source": "crud_collection_protocol_align_fq_payment_details_payload", + "target": "services_protocol_payment_installment_calc_fq_installment_due_date", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "crud/collection_protocol.py", + "source_location": "L2553", "weight": 1.0 }, { @@ -145664,7 +146463,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2632", + "source_location": "L2636", "weight": 1.0 }, { @@ -145674,7 +146473,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2633", + "source_location": "L2637", "weight": 1.0 }, { @@ -145684,7 +146483,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2634", + "source_location": "L2638", "weight": 1.0 }, { @@ -145694,7 +146493,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2708", + "source_location": "L2712", "weight": 1.0 }, { @@ -145704,7 +146503,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2710", + "source_location": "L2714", "weight": 1.0 }, { @@ -145714,7 +146513,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2716", + "source_location": "L2720", "weight": 1.0 }, { @@ -145724,7 +146523,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2717", + "source_location": "L2721", "weight": 1.0 }, { @@ -145734,7 +146533,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2743", + "source_location": "L2747", "weight": 1.0 }, { @@ -145744,7 +146543,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2779", + "source_location": "L2783", "weight": 1.0 }, { @@ -145754,7 +146553,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2780", + "source_location": "L2784", "weight": 1.0 }, { @@ -145764,7 +146563,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2784", + "source_location": "L2788", "weight": 1.0 }, { @@ -145774,7 +146573,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2908", + "source_location": "L2912", "weight": 1.0 }, { @@ -145784,7 +146583,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2917", + "source_location": "L2921", "weight": 1.0 }, { @@ -145794,7 +146593,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2918", + "source_location": "L2922", "weight": 1.0 }, { @@ -145804,7 +146603,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "crud/collection_protocol.py", - "source_location": "L2922", + "source_location": "L2926", "weight": 1.0 }, { @@ -153094,7 +153893,47 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L38", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "api_public_build_current_user_payload", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "api_public_build_current_user_payload", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "api_public_resolve_current_user_from_request", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "api_public_resolve_current_user_from_request", + "target": "core_auth_get_current_user_by_token", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L93", "weight": 1.0 }, { @@ -153104,7 +153943,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L71", + "source_location": "L109", "weight": 1.0 }, { @@ -153114,7 +153953,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L72", + "source_location": "L110", "weight": 1.0 }, { @@ -153124,7 +153963,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L72", + "source_location": "L110", "weight": 1.0 }, { @@ -153134,7 +153973,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L82", + "source_location": "L120", "weight": 1.0 }, { @@ -153144,7 +153983,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L83", + "source_location": "L121", "weight": 1.0 }, { @@ -153154,7 +153993,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L85", + "source_location": "L123", "weight": 1.0 }, { @@ -153164,7 +154003,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L87", + "source_location": "L125", "weight": 1.0 }, { @@ -153174,7 +154013,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L93", + "source_location": "L131", "weight": 1.0 }, { @@ -153184,7 +154023,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L99", + "source_location": "L137", "weight": 1.0 }, { @@ -153194,7 +154033,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L101", + "source_location": "L139", "weight": 1.0 }, { @@ -153204,7 +154043,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L105", + "source_location": "L143", "weight": 1.0 }, { @@ -153214,7 +154053,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L110", + "source_location": "L148", "weight": 1.0 }, { @@ -153224,7 +154063,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L120", + "source_location": "L158", "weight": 1.0 }, { @@ -153234,7 +154073,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L121", + "source_location": "L159", "weight": 1.0 }, { @@ -153244,79 +154083,79 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L123", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "crud_base_crudbase_get", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L136", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "core_response_error_response", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L138", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "core_auth_decode_token", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L141", - "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": "L148", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "core_auth_is_refresh_token_valid", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L150", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "services_web_auth_roles_resolve_web_role_for_user", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L159", - "weight": 1.0 - }, - { - "source": "api_public_refresh_token", - "target": "core_auth_revoke_refresh_token", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", "source_location": "L161", "weight": 1.0 }, + { + "source": "api_public_refresh_token", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "api_public_refresh_token", + "target": "core_response_error_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L176", + "weight": 1.0 + }, + { + "source": "api_public_refresh_token", + "target": "core_auth_decode_token", + "relation": "calls", + "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_refresh_token_valid", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "api_public_refresh_token", + "target": "services_web_auth_roles_resolve_web_role_for_user", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L197", + "weight": 1.0 + }, + { + "source": "api_public_refresh_token", + "target": "core_auth_revoke_refresh_token", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L199", + "weight": 1.0 + }, { "source": "api_public_refresh_token", "target": "core_auth_extend_session", @@ -153324,7 +154163,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L162", + "source_location": "L200", "weight": 1.0 }, { @@ -153334,7 +154173,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L164", + "source_location": "L202", "weight": 1.0 }, { @@ -153344,7 +154183,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L167", + "source_location": "L205", "weight": 1.0 }, { @@ -153354,7 +154193,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L172", + "source_location": "L210", "weight": 1.0 }, { @@ -153364,7 +154203,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L182", + "source_location": "L220", "weight": 1.0 }, { @@ -153374,7 +154213,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L184", + "source_location": "L222", "weight": 1.0 }, { @@ -153384,7 +154223,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L198", + "source_location": "L236", "weight": 1.0 }, { @@ -153394,7 +154233,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L200", + "source_location": "L238", "weight": 1.0 }, { @@ -153404,7 +154243,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L204", + "source_location": "L242", "weight": 1.0 }, { @@ -153414,7 +154253,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L207", + "source_location": "L245", "weight": 1.0 }, { @@ -153424,47 +154263,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L211", - "weight": 1.0 - }, - { - "source": "api_public_get_current_user_profile", - "target": "crud_base_crudbase_get", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L217", - "weight": 1.0 - }, - { - "source": "api_public_get_current_user_profile", - "target": "core_response_error_response", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L219", - "weight": 1.0 - }, - { - "source": "api_public_get_current_user_profile", - "target": "core_auth_get_current_user_by_token", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L223", - "weight": 1.0 - }, - { - "source": "api_public_get_current_user_profile", - "target": "str", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L226", + "source_location": "L249", "weight": 1.0 }, { @@ -153474,49 +154273,219 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L227", + "source_location": "L257", "weight": 1.0 }, { - "source": "api_public_get_web_auth_menu_codes", - "target": "crud_base_crudbase_get", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L250", - "weight": 1.0 - }, - { - "source": "api_public_get_web_auth_menu_codes", + "source": "api_public_get_current_user_profile", "target": "core_response_error_response", "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L252", - "weight": 1.0 - }, - { - "source": "api_public_get_web_auth_menu_codes", - "target": "core_auth_get_current_user_by_token", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", - "source_location": "L256", - "weight": 1.0 - }, - { - "source": "api_public_get_web_auth_menu_codes", - "target": "core_response_success_response", - "relation": "calls", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "api/public.py", "source_location": "L259", "weight": 1.0 }, + { + "source": "api_public_update_current_user_profile", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L271", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "core_response_error_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "api_admin_update_user", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L276", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "services_web_auth_roles_resolve_web_role_for_user", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L290", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "core_response_success_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "api_public_update_current_user_profile", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L295", + "weight": 1.0 + }, + { + "source": "api_public_change_current_user_password", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L307", + "weight": 1.0 + }, + { + "source": "api_public_change_current_user_password", + "target": "core_response_error_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L309", + "weight": 1.0 + }, + { + "source": "api_public_change_current_user_password", + "target": "crud_user_change_password", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L318", + "weight": 1.0 + }, + { + "source": "api_public_change_current_user_password", + "target": "core_response_success_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L319", + "weight": 1.0 + }, + { + "source": "api_public_change_current_user_password", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L323", + "weight": 1.0 + }, + { + "source": "api_public_upload_current_user_avatar", + "target": "core_response_error_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L340", + "weight": 1.0 + }, + { + "source": "api_public_upload_current_user_avatar", + "target": "core_storage_miniostorage_upload_file", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L360", + "weight": 1.0 + }, + { + "source": "api_public_upload_current_user_avatar", + "target": "core_avatar_url_extract_avatar_storage_key", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L361", + "weight": 1.0 + }, + { + "source": "api_public_upload_current_user_avatar", + "target": "core_response_success_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L362", + "weight": 1.0 + }, + { + "source": "api_public_upload_current_user_avatar", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L364", + "weight": 1.0 + }, + { + "source": "api_public_get_web_auth_menu_codes", + "target": "crud_base_crudbase_get", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L370", + "weight": 1.0 + }, + { + "source": "api_public_get_web_auth_menu_codes", + "target": "core_response_error_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L372", + "weight": 1.0 + }, + { + "source": "api_public_get_web_auth_menu_codes", + "target": "core_auth_get_current_user_by_token", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L376", + "weight": 1.0 + }, + { + "source": "api_public_get_web_auth_menu_codes", + "target": "core_response_success_response", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "api/public.py", + "source_location": "L379", + "weight": 1.0 + }, { "source": "api_public_get_web_auth_menu_codes", "target": "services_web_auth_roles_iter_user_menu_perm_codes", @@ -153524,7 +154493,7 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "api/public.py", - "source_location": "L268", + "source_location": "L388", "weight": 1.0 }, { @@ -176726,6 +177695,26 @@ "source_file": "services/web_auth_roles.py", "source_location": "L92", "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_add_interval_months_yyyymmdd", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "services/protocol_payment_installment.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "services_protocol_payment_installment_calc_fq_installment_due_date", + "target": "str", + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "services/protocol_payment_installment.py", + "source_location": "L69", + "weight": 1.0 } ], "input_tokens": 0, diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 928aaf8a..e39a6cb2 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,12 +1,12 @@ -# Graph Report - app (2026-06-03) +# Graph Report - app (2026-06-04) ## Corpus Check -- 179 files · ~187,032 words +- 181 files · ~187,864 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 3386 nodes · 15106 edges · 40 communities detected -- Extraction: 37% EXTRACTED · 63% INFERRED · 0% AMBIGUOUS · INFERRED: 9448 edges (avg confidence: 0.61) +- 3412 nodes · 15181 edges · 55 communities detected +- Extraction: 38% EXTRACTED · 62% INFERRED · 0% AMBIGUOUS · INFERRED: 9487 edges (avg confidence: 0.61) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) @@ -44,17 +44,32 @@ - [[_COMMUNITY_Community 31|Community 31]] - [[_COMMUNITY_Community 32|Community 32]] - [[_COMMUNITY_Community 33|Community 33]] +- [[_COMMUNITY_Community 34|Community 34]] +- [[_COMMUNITY_Community 35|Community 35]] - [[_COMMUNITY_Community 36|Community 36]] - [[_COMMUNITY_Community 37|Community 37]] - [[_COMMUNITY_Community 38|Community 38]] - [[_COMMUNITY_Community 39|Community 39]] - [[_COMMUNITY_Community 40|Community 40]] - [[_COMMUNITY_Community 41|Community 41]] +- [[_COMMUNITY_Community 42|Community 42]] +- [[_COMMUNITY_Community 43|Community 43]] +- [[_COMMUNITY_Community 44|Community 44]] +- [[_COMMUNITY_Community 45|Community 45]] +- [[_COMMUNITY_Community 46|Community 46]] +- [[_COMMUNITY_Community 47|Community 47]] +- [[_COMMUNITY_Community 48|Community 48]] +- [[_COMMUNITY_Community 51|Community 51]] +- [[_COMMUNITY_Community 52|Community 52]] +- [[_COMMUNITY_Community 53|Community 53]] +- [[_COMMUNITY_Community 54|Community 54]] +- [[_COMMUNITY_Community 55|Community 55]] +- [[_COMMUNITY_Community 56|Community 56]] ## God Nodes (most connected - your core abstractions) -1. `success_response()` - 524 edges -2. `error_response()` - 424 edges -3. `SysUser` - 359 edges +1. `success_response()` - 527 edges +2. `error_response()` - 427 edges +3. `SysUser` - 363 edges 4. `BizQcTaskResult` - 272 edges 5. `BizQcMaterialUsage` - 264 edges 6. `BizQcMaterial` - 262 edges @@ -68,215 +83,275 @@ core/api_request_log_middleware.py → models/models.py - `get_menu_list()` --calls--> `success_response()` [INFERRED] api/menu.py → core/response.py -- `公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线)` --uses--> `SysUser` [INFERRED] - api/public.py → models/models.py -- `与 web-admin `userInfo` 字段约定一致。` --uses--> `SysUser` [INFERRED] - api/public.py → models/models.py -- `Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致)` --uses--> `SysUser` [INFERRED] - api/public.py → models/models.py +- `中试服务交付管理 API(交付信息、交付物料、交付方式)` --uses--> `SysUser` [INFERRED] + api/pilot_delivery.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 ## Communities ### Community 0 - "Community 0" Cohesion: 0.01 -Nodes (633): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu() (+625 more) +Nodes (596): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+588 more) ### Community 1 - "Community 1" Cohesion: 0.01 -Nodes (463): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+455 more) +Nodes (523): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+515 more) ### Community 2 - "Community 2" Cohesion: 0.05 -Nodes (285): 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, Base (+277 more) +Nodes (387): AuditCreateBody, BatchDetailIdsBody, BatchRefundFinanceSubmitBody, FinanceConfirmBody, FullmoonTodoInsuranceBody, ProtocolCreateBody, ProtocolUpdateBody, 细胞存储 — 采集协议单 / 审核 / 财务确认 / 分期预警 API (+379 more) ### Community 3 - "Community 3" Cohesion: 0.02 -Nodes (205): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+197 more) +Nodes (214): list_collection_regions(), list_protocol_nos(), _ensure_customer_for_mother(), _persist_protocol_sub_resources(), list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id() (+206 more) ### Community 4 - "Community 4" -Cohesion: 0.07 -Nodes (223): AuditCreateBody, BatchDetailIdsBody, BatchRefundFinanceSubmitBody, FinanceConfirmBody, FullmoonTodoInsuranceBody, ProtocolCreateBody, ProtocolUpdateBody, 细胞存储 — 采集协议单 / 审核 / 财务确认 / 分期预警 API (+215 more) +Cohesion: 0.05 +Nodes (178): generate_uuid(), _deduct_fee_on_delivery(), 创建交付时扣减费用。 流程: 1. schedule → plan → application 2. application.chan, activate_channel_agreement(), _apply_gmcp_order_quotas(), _apply_purchase_txn_holdings(), _apply_unsubscribe_txn_holdings(), _batch_gmcp_current_holding_amounts() (+170 more) ### Community 5 - "Community 5" -Cohesion: 0.02 -Nodes (157): get_designer_data(), delete(), get_multi_with_filters(), create_cell_sample_type(), get_cell_sample_type(), list_cell_sample_types(), 细胞样本类型 CRUD(biz_cell_sample_type), _row_to_dict() (+149 more) +Cohesion: 0.03 +Nodes (167): _format_attachment_file_size(), urls_to_attachment_list(), list_production_tasks(), apply_task_result(), complete_task(), _conclusion_label(), create_qc_task_manual(), create_task_for_line() (+159 more) ### Community 6 - "Community 6" Cohesion: 0.03 -Nodes (161): api_create_outbound_qc(), _format_attachment_file_size(), urls_to_attachment_list(), batch_review(), _fmt_dt(), get_schedule_detail(), _get_user_name(), list_reviews_paginated() (+153 more) +Nodes (103): _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 基线) (+95 more) ### Community 7 - "Community 7" Cohesion: 0.03 -Nodes (144): api_save_application(), eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), _apply_submit_receipt() (+136 more) +Nodes (108): 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(), soft_delete_dict_type() (+100 more) ### Community 8 - "Community 8" Cohesion: 0.03 -Nodes (128): _persist_protocol_sub_resources(), list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3, 根据用户角色的数据权限过滤查询。 Args: query: SQLAlchemy query 对象 model: 查询, 从 SysUser 读取用户的 dept_id。 (+120 more) +Nodes (63): _error_json(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError, _b64url_decode() (+55 more) ### Community 9 - "Community 9" -Cohesion: 0.03 -Nodes (67): _error_json(), lifespan(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError (+59 more) +Cohesion: 0.04 +Nodes (94): api_save_application(), eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), auto_generate_schedules() (+86 more) ### Community 10 - "Community 10" -Cohesion: 0.03 -Nodes (89): generate_id(), camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, get_protocol_nos_used_in_protocols(), create_dict_type(), dict_type_code_exists() (+81 more) +Cohesion: 0.05 +Nodes (82): 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() (+74 more) ### Community 11 - "Community 11" -Cohesion: 0.06 -Nodes (87): AccessLogCreateBody, AccessLogUpdateBody, batch_create_storage_slots(), CleanRoomCreateBody, CleanRoomUpdateBody, create_access_log(), create_storage_slot(), delete_access_log() (+79 more) - -### Community 12 - "Community 12" Cohesion: 0.35 Nodes (61): BatchStockInBody, BatchStockInItem, BatchStockOutBody, BatchStockOutItem, ConsumableCreateBody, ConsumablePackCreateBody, ConsumablePackUpdateBody, ConsumableUpdateBody (+53 more) +### Community 12 - "Community 12" +Cohesion: 0.07 +Nodes (62): batch_delete_research_donations(), change_donation_status(), convert_from_storage(), convert_to_storage(), create_research_donation(), delete_research_donation(), _get_current_user_id(), get_research_donation_detail() (+54 more) + ### Community 13 - "Community 13" -Cohesion: 0.06 -Nodes (57): _avatar_url_field(), _build_user_info_payload(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/zkxw.sql 基线), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。, 获取当前用户菜单权限标识(sys_menu.perms,经角色继承)。 (+49 more) +Cohesion: 0.07 +Nodes (51): get_designer_data(), ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, list_results_by_task() (+43 more) ### Community 14 - "Community 14" -Cohesion: 0.06 -Nodes (60): 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() (+52 more) +Cohesion: 0.16 +Nodes (32): _create_insurance_company(), _create_insurance_company_invoice(), _create_insurance_project_price(), delete_insurance_company(), delete_insurance_company_invoice(), delete_insurance_project_price(), _fmt_dt(), _generate_uuid() (+24 more) ### Community 15 - "Community 15" -Cohesion: 0.08 -Nodes (55): batch_delete_research_donations(), change_donation_status(), convert_from_storage(), convert_to_storage(), create_research_donation(), delete_research_donation(), _get_current_user_id(), get_research_donation_detail() (+47 more) - -### Community 16 - "Community 16" -Cohesion: 0.12 -Nodes (30): _apply_qc_status_filter(), _base_query(), _derive_qc_conclusion(), _ensure_notification(), _eq_ci(), _fetch_completed_tasks(), _fmt_dt(), generate_sms_content() (+22 more) - -### Community 17 - "Community 17" Cohesion: 0.12 Nodes (11): get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.ht, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total, 申请退款 Args: out_trade_no: 商户订单号 total_amount, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 tot, 生成签名 V3 (SHA256 with RSA) (+3 more) +### Community 16 - "Community 16" +Cohesion: 0.16 +Nodes (26): add_step(), copy_step(), create_route(), _create_step_consumable(), _create_step_data_collection(), _create_step_output(), _create_step_reagent(), get_route() (+18 more) + +### Community 17 - "Community 17" +Cohesion: 0.14 +Nodes (23): batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status(), list_consumables() (+15 more) + ### Community 18 - "Community 18" +Cohesion: 0.13 +Nodes (18): _access_log_to_dict(), create_access_log(), create_clean_room(), get_access_log(), get_clean_room(), list_access_logs(), list_clean_rooms(), room_code_exists() (+10 more) + +### Community 19 - "Community 19" +Cohesion: 0.16 +Nodes (19): get_by_schedule(), get_method(), _get_tenant_no(), list_by_application(), list_materials(), 中试服务交付管理 API(交付信息、交付物料、交付方式), soft_delete(), create_delivery() (+11 more) + +### Community 20 - "Community 20" Cohesion: 0.21 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.25 -Nodes (13): code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), list_materials(), _norm_status(), options_list() (+5 more) - ### Community 21 - "Community 21" +Cohesion: 0.21 +Nodes (16): batch_stock_in(), batch_stock_out(), _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), list_materials() (+8 more) + +### Community 22 - "Community 22" +Cohesion: 0.25 +Nodes (14): batch_stock_in(), batch_stock_out(), create_reagent(), _dec(), get_reagent(), _is_enabled_status(), list_reagents(), _norm_status() (+6 more) + +### Community 23 - "Community 23" +Cohesion: 0.2 +Nodes (14): deduct_for_task(), _display_remark(), list_usages(), list_usages_by_task(), _parse_receiver_purpose_from_remark(), 查询质检任务关联的物料使用记录(task_complete)。, 撤销任务此前 task_complete 扣减,便于重新填报物料使用。, 兼容旧数据:领用人/用途曾拼接在 remark 中。 (+6 more) + +### Community 24 - "Community 24" Cohesion: 0.25 Nodes (13): batch_issue_protocol_nos(), batch_revoke_protocol_nos(), create_protocol_no(), get_protocol_no(), list_protocol_nos(), _parse_issued_time(), protocol_no_exists(), 采集协议号池 CRUD(biz_collection_protocol_no) (+5 more) -### Community 22 - "Community 22" +### Community 25 - "Community 25" 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 23 - "Community 23" -Cohesion: 0.24 -Nodes (9): _ensure_customer_for_mother(), create_customer(), get_customer(), id_card_taken(), list_customers(), 客户 CRUD(biz_customer), _row_to_dict(), soft_delete_customer() (+1 more) +### Community 26 - "Community 26" +Cohesion: 0.23 +Nodes (12): Config, ProductBase, ProductCategoryBase, ProductCategoryCreate, ProductCategoryResponse, ProductCreate, ProductResponse, ProductUnitBase (+4 more) -### Community 24 - "Community 24" +### Community 27 - "Community 27" +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 28 - "Community 28" +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 29 - "Community 29" +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 30 - "Community 30" +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 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 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 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 25 - "Community 25" +### 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 35 - "Community 35" +Cohesion: 0.31 +Nodes (8): category_code_exists(), create_process_category(), get_process_category(), list_process_categories(), 工艺工序分类 CRUD(biz_process_category), _row_to_dict(), soft_delete_process_category(), update_process_category() + +### Community 36 - "Community 36" +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 37 - "Community 37" +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 38 - "Community 38" +Cohesion: 0.31 +Nodes (8): create_output_type(), get_output_type(), list_output_types(), 工艺产出物类型 CRUD(biz_output_type), _row_to_dict(), soft_delete_output_type(), type_code_exists(), update_output_type() + +### Community 39 - "Community 39" Cohesion: 0.36 -Nodes (9): deduct_for_task(), _display_remark(), list_usages(), list_usages_by_task(), _parse_receiver_purpose_from_remark(), _resolve_receiver_purpose(), revert_task_material_usages(), _row_to_dict() (+1 more) +Nodes (7): create_tenant(), get_tenant(), list_tenants(), _row_to_dict(), soft_delete_tenant(), tenant_no_exists(), update_tenant() -### Community 26 - "Community 26" -Cohesion: 0.39 -Nodes (8): create_lab_item(), get_lab_item(), item_code_exists(), list_active_lab_items(), list_lab_items(), _row_to_dict(), soft_delete_lab_item(), update_lab_item() +### 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 27 - "Community 27" +### Community 41 - "Community 41" +Cohesion: 0.36 +Nodes (7): create_site(), get_site(), list_sites(), _row_to_dict(), site_code_exists(), soft_delete_site(), update_site() + +### Community 42 - "Community 42" Cohesion: 0.29 Nodes (2): BaseModel, SoftDeleteModel -### Community 28 - "Community 28" +### Community 43 - "Community 43" Cohesion: 0.38 Nodes (6): derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal() -### Community 29 - "Community 29" +### Community 44 - "Community 44" Cohesion: 0.5 Nodes (3): BaseSettings, Config, Settings -### Community 30 - "Community 30" +### Community 45 - "Community 45" Cohesion: 0.5 Nodes (2): _auto_fill_create_dept_id(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID -### Community 31 - "Community 31" +### Community 46 - "Community 46" Cohesion: 0.67 Nodes (2): get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,13 个一级菜单) -### Community 32 - "Community 32" +### Community 47 - "Community 47" Cohesion: 1.0 Nodes (1): 请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传 -### Community 33 - "Community 33" +### Community 48 - "Community 48" Cohesion: 1.0 Nodes (1): API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位) -### Community 36 - "Community 36" +### Community 51 - "Community 51" Cohesion: 1.0 Nodes (1): 发送订单状态通知 Args: openid: 用户openid ord -### Community 37 - "Community 37" +### Community 52 - "Community 52" Cohesion: 1.0 Nodes (1): 发送支付成功通知 Args: openid: 用户openid ord -### Community 38 - "Community 38" +### Community 53 - "Community 53" Cohesion: 1.0 Nodes (1): 发送配送通知 Args: openid: 配送员openid task -### Community 39 - "Community 39" +### Community 54 - "Community 54" Cohesion: 1.0 Nodes (1): 发送配送时效预警 Args: openid: 配送员openid ta -### Community 40 - "Community 40" +### Community 55 - "Community 55" Cohesion: 1.0 Nodes (1): 发送退款结果通知 Args: openid: 用户openid ord -### Community 41 - "Community 41" +### Community 56 - "Community 56" Cohesion: 1.0 Nodes (1): 发送催单通知给配送员 Args: deliver_openid: 配送员openid ## Knowledge Gaps -- **99 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。` (+94 more) +- **106 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。` (+101 more) These have ≤1 connection - possible missing edges or undocumented components. -- **Thin community `Community 27`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()` +- **Thin community `Community 42`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 30`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID` +- **Thin community `Community 45`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 31`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,13 个一级菜单)` +- **Thin community `Community 46`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,13 个一级菜单)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 32`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传` +- **Thin community `Community 47`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 33`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)` +- **Thin community `Community 48`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 36`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord` +- **Thin community `Community 51`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 37`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord` +- **Thin community `Community 52`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 38`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task` +- **Thin community `Community 53`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 39`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta` +- **Thin community `Community 54`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 40`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord` +- **Thin community `Community 55`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord` Too small to be a meaningful cluster - may be noise or needs more connections extracted. -- **Thin community `Community 41`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid` +- **Thin community `Community 56`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid` Too small to be a meaningful cluster - may be noise or needs more connections extracted. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 4`, `Community 7`, `Community 8`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 15`, `Community 16`, `Community 21`?** - _High betweenness centrality (0.113) - this node is a cross-community bridge._ -- **Why does `generate_uuid()` connect `Community 3` to `Community 0`, `Community 1`, `Community 2`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 23`, `Community 24`, `Community 25`, `Community 26`?** - _High betweenness centrality (0.073) - this node is a cross-community bridge._ -- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 31`?** - _High betweenness centrality (0.067) - this node is a cross-community bridge._ -- **Are the 523 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?** - _`success_response()` has 523 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 514 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `extract_login_credentials()`) actually correct?** - _`str` has 514 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 423 inferred relationships involving `error_response()` (e.g. with `_json_error_response()` and `list_storage_release_reviews()`) actually correct?** - _`error_response()` has 423 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 357 inferred relationships involving `SysUser` (e.g. with `数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3` and `从 SysUser 读取用户的 dept_id。`) actually correct?** - _`SysUser` has 357 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file +- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 3`, `Community 4`, `Community 6`, `Community 7`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 17`, `Community 19`, `Community 23`, `Community 24`, `Community 29`?** + _High betweenness centrality (0.117) - this node is a cross-community bridge._ +- **Why does `generate_uuid()` connect `Community 4` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 5`, `Community 6`, `Community 7`, `Community 9`, `Community 10`, `Community 12`, `Community 13`, `Community 16`, `Community 17`, `Community 18`, `Community 20`, `Community 21`, `Community 22`, `Community 23`, `Community 24`, `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`, `Community 41`?** + _High betweenness centrality (0.069) - this node is a cross-community bridge._ +- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 3`, `Community 6`, `Community 9`, `Community 10`, `Community 12`, `Community 13`, `Community 46`, `Community 14`, `Community 19`?** + _High betweenness centrality (0.068) - this node is a cross-community bridge._ +- **Are the 526 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?** + _`success_response()` has 526 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 521 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?** + _`str` has 521 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 426 inferred relationships involving `error_response()` (e.g. with `_json_error_response()` and `list_storage_release_reviews()`) actually correct?** + _`error_response()` has 426 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 361 inferred relationships involving `SysUser` (e.g. with `数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3` and `从 SysUser 读取用户的 dept_id。`) actually correct?** + _`SysUser` has 361 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 01a24091..ff96a10b 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -57,12 +57,12 @@
-