diff --git a/backend/app.pid b/backend/app.pid index 87a30a565..dd099cd1c 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -90187 +76884 diff --git a/backend/app/api/admin.py b/backend/app/api/admin.py index 38777b7cb..fad06290d 100644 --- a/backend/app/api/admin.py +++ b/backend/app/api/admin.py @@ -27,7 +27,7 @@ from app.crud import user as user_svc from app.crud import role as role_svc from app.crud import user as user_svc from app.crud import oss as oss_svc -from app.models.models import SysDept, SysDictData, SysRole, SysUser +from app.models.models import SysDept, SysDictData, SysRole, SysUser, SysUserRole from app.schemas.menu_favorite import ( MenuFavoriteCreateBody, MenuFavoriteDeleteBody, @@ -316,6 +316,20 @@ def list_users( result_list = [ user_svc._row_to_dict(r, dept_name=dept_map.get(r.dept_id or "", "")) for r in items ] + user_ids = [d["id"] for d in result_list if d.get("id")] + role_map: dict[str, list[str]] = {uid: [] for uid in user_ids} + if user_ids: + for ur in ( + db.query(SysUserRole) + .filter( + SysUserRole.user_id.in_(user_ids), + SysUserRole.del_flag == 0, + ) + .all() + ): + role_map.setdefault(ur.user_id, []).append(ur.role_id) + for d in result_list: + d["roleIds"] = role_map.get(d["id"], []) tp = user_svc.total_pages(total, pageSize) return success_response({"list": result_list, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp}) @@ -1226,6 +1240,23 @@ def create_role_management( return error_response(400, str(e)) +@router.get("/role-management/{role_id}") +def get_role_management( + role_id: str, + user: dict = Depends(require_admin_or_super_admin), + db: Session = Depends(get_db), +): + tenant_no = _get_tenant_no(db, user) + obj = role_svc.get_role(db, role_id) + if not obj or obj.tenant_no != tenant_no: + return error_response(404, "角色不存在") + try: + assert_row_in_data_scope(db, obj, SysRole, user, tenant_no) + except HTTPException: + return error_response(403, "无权查看该角色") + return success_response(role_svc._row_to_dict(obj)) + + @router.put("/role-management/{role_id}") def update_role_management( role_id: str, diff --git a/backend/app/schemas/pl/base_data.py b/backend/app/schemas/pl/base_data.py index d8c769819..5564c63b8 100644 --- a/backend/app/schemas/pl/base_data.py +++ b/backend/app/schemas/pl/base_data.py @@ -188,6 +188,7 @@ class VehicleBase(BaseModel): class VehicleCreate(VehicleBase): + trailer_no: str = Field(..., min_length=1, max_length=20, alias="trailerNo", description="挂车号") personnel_list: list[VehiclePersonnelRow] = Field(default_factory=list, alias="personnelList") cert_list: list[CertRow] = Field(default_factory=list, alias="certList") model_config = {"populate_by_name": True} @@ -198,7 +199,7 @@ class VehicleUpdate(BaseModel): carrier_id: Optional[str] = Field(default=None, alias="carrierId") carrier_name: Optional[str] = Field(default=None, max_length=200, alias="carrierName") license_plate: Optional[str] = Field(default=None, max_length=20, alias="licensePlate") - trailer_no: Optional[str] = Field(default=None, max_length=20, alias="trailerNo") + trailer_no: Optional[str] = Field(default=None, min_length=1, max_length=20, alias="trailerNo") load_capacity: Optional[Decimal] = Field(default=None, alias="loadCapacity") vehicle_status: Optional[str] = Field(default=None, max_length=20, alias="vehicleStatus") photo_urls: Optional[str] = Field( diff --git a/backend/app/schemas/pl/paste_recognize.py b/backend/app/schemas/pl/paste_recognize.py index b641d9949..b535b4dbd 100644 --- a/backend/app/schemas/pl/paste_recognize.py +++ b/backend/app/schemas/pl/paste_recognize.py @@ -23,7 +23,7 @@ class PastePersonnelIn(BaseModel): class PasteVehicleIn(BaseModel): license_plate: str = Field(alias="licensePlate") - trailer_no: Optional[str] = Field(default=None, alias="trailerNo") + trailer_no: str = Field(..., min_length=1, max_length=20, alias="trailerNo") load_capacity: Optional[float] = Field(default=None, alias="loadCapacity") carrier_id: Optional[str] = Field(default=None, alias="carrierId") carrier_name: Optional[str] = Field(default=None, alias="carrierName") diff --git a/backend/app/services/pl_cert_required_service.py b/backend/app/services/pl_cert_required_service.py index b785a63a3..790e648e9 100644 --- a/backend/app/services/pl_cert_required_service.py +++ b/backend/app/services/pl_cert_required_service.py @@ -31,6 +31,23 @@ PERSONNEL_BOTH_REQUIRED = ( VEHICLE_PART_HEAD = "head" VEHICLE_PART_TRAILER = "trailer" +HUOLALA_TRAILER_NO = "货拉拉" + + +def is_huolala_trailer_no(trailer_no: str | None) -> bool: + return (trailer_no or "").strip() == HUOLALA_TRAILER_NO + + +def should_show_trailer_cert_slots(trailer_no: str | None) -> bool: + text = (trailer_no or "").strip() + return bool(text) and not is_huolala_trailer_no(text) + + +def should_require_trailer_certs(vehicle_type: str | None, trailer_no: str | None) -> bool: + return (vehicle_type or "").strip() == VEHICLE_TYPE_SELF and should_show_trailer_cert_slots( + trailer_no + ) + def match_required_cert_name(actual_name: str | None, required_name: str) -> bool: name = (actual_name or "").strip() @@ -178,7 +195,7 @@ def validate_self_vehicle_required_certs( cert_rows, SELF_HEAD_REQUIRED, part_label="主车" ) ) - if (trailer_no or "").strip(): + if should_require_trailer_certs(VEHICLE_TYPE_SELF, trailer_no): errors.extend( collect_required_cert_errors( cert_rows, SELF_TRAILER_REQUIRED, part_label="挂车" @@ -196,23 +213,9 @@ def validate_carrier_vehicle_required_certs( *, trailer_no: str | None = None, ) -> None: - errors: list[str] = [] - errors.extend( - collect_required_cert_errors( - cert_rows, CARRIER_HEAD_REQUIRED, part_label="主车" - ) - ) - if (trailer_no or "").strip(): - errors.extend( - collect_required_cert_errors( - cert_rows, CARRIER_TRAILER_REQUIRED, part_label="挂车" - ) - ) - if errors: - raise HTTPException( - status_code=400, - detail=f"必备证书未齐全:{';'.join(errors)}", - ) + """三方车辆证件不强制;保留函数供兼容调用,恒为通过。""" + _ = (cert_rows, trailer_no) + return def validate_vehicle_personnel_affiliation( diff --git a/backend/app/services/pl_paste_recognize_service.py b/backend/app/services/pl_paste_recognize_service.py index 395016a41..21b03e2f5 100644 --- a/backend/app/services/pl_paste_recognize_service.py +++ b/backend/app/services/pl_paste_recognize_service.py @@ -193,7 +193,10 @@ def _resolve_vehicle( target = _get_vehicle(db, tenant_no, conflict.existing_id) if conflict.action == "reuse": return target.id - target.trailer_no = (draft.trailer_no or "").strip() or None + trailer_no = (draft.trailer_no or "").strip() + if not trailer_no: + raise HTTPException(status_code=400, detail="挂车号不能为空") + target.trailer_no = trailer_no target.load_capacity = draft.load_capacity target.carrier_id = carrier_id target.carrier_name = carrier_name @@ -201,6 +204,10 @@ def _resolve_vehicle( target.update_by = user_id return target.id + trailer_no = (draft.trailer_no or "").strip() + if not trailer_no: + raise HTTPException(status_code=400, detail="挂车号不能为空") + vehicle = PlVehicle( id=generate_uuid(), tenant_no=tenant_no, @@ -208,7 +215,7 @@ def _resolve_vehicle( carrier_id=carrier_id, carrier_name=carrier_name, license_plate=plate, - trailer_no=(draft.trailer_no or "").strip() or None, + trailer_no=trailer_no, load_capacity=draft.load_capacity, vehicle_status="available", create_by=user_id, diff --git a/backend/graphify-out/.graphify_labels.json b/backend/graphify-out/.graphify_labels.json index 049d77fd4..755ca09b6 100644 --- a/backend/graphify-out/.graphify_labels.json +++ b/backend/graphify-out/.graphify_labels.json @@ -89,32 +89,40 @@ "87": "Community 87", "88": "CrmProduct", "89": "pl_ocr_service.py", - "90": "SysApiRequestLog", - "91": "pl_vehicle_recharge_service.py", + "90": "WechatMessageService", + "91": "opportunity_product.py", "92": "Community 92", - "93": "list_products", + "93": "api_request_log_middleware.py", "94": "assert_contract_editable_for_update", - "95": "Community 95", - "96": "__init__.py", + "95": "test_pl_public_link_archived.py", + "96": "opportunity_follow.py", "97": "_ensure_subpack_slip_no", "98": "LocalStorage", "99": "QiniuStorage", "100": "price_letter_detail", - "101": "list_product_options", - "102": "dept.py", + "101": "tenant.py", + "102": "crm_supplier_hazard.py", "103": "pl_internal_customer.py", "104": "apply_crm_create_by_scope", + "105": "pool_customer_assign", + "106": "site.py", "107": "apply_pl_scope", + "108": "statistics.py", "109": "Community 109", + "110": "plan_has_incomplete_hazard_cert_exists", "111": "Community 111", + "112": ".to_tenant_user_dict", "113": "quote_share_log.py", "114": "db_models.py", "115": "site.py", "116": "Community 116", + "117": "get_web_auth_menu_codes", "118": "Community 118", "119": "Community 119", + "120": "sqlalchemy_exception_handler", + "121": "Session", "122": "Community 122", - "125": "Community 125", + "123": "list_product_options", "126": "customer_pool.py", "129": "BaseStorage", "134": "Community 134", @@ -129,16 +137,12 @@ "151": "Community 151", "154": "response.py", "159": "customer_update", - "160": "register_local_callback", "162": ".to_tenant_user_dict", "164": "get_client_ip", "166": "code:block1 (/iflytek/shanxia2.0/backend)", "170": "test_quote_approver_setting.py", - "171": "minio_url.py", "173": "resolve_create_time_bounds", - "174": "register_local_callback", "179": "test_pl_vehicle_personnel_photo_schema.py", - "182": "statistics.py", "188": "get_client_ip", "206": "crm_quote_pdf.py", "207": "shanxia2.0 后端骨架(FastAPI)", diff --git a/backend/graphify-out/2026-08-20/.graphify_labels.json b/backend/graphify-out/2026-08-20/.graphify_labels.json index 76afb333f..d27f833c2 100644 --- a/backend/graphify-out/2026-08-20/.graphify_labels.json +++ b/backend/graphify-out/2026-08-20/.graphify_labels.json @@ -89,35 +89,39 @@ "87": "Community 87", "88": "CrmProduct", "89": "pl_ocr_service.py", - "90": "SysApiRequestLog", - "91": "pl_vehicle_recharge_service.py", + "90": "WechatMessageService", + "91": "opportunity_product.py", "92": "Community 92", - "93": "list_products", + "93": "api_request_log_middleware.py", "94": "assert_contract_editable_for_update", - "95": "Community 95", - "96": "__init__.py", + "95": "test_pl_public_link_archived.py", + "96": "opportunity_follow.py", "97": "_ensure_subpack_slip_no", "98": "LocalStorage", "99": "QiniuStorage", "100": "price_letter_detail", - "101": "list_product_options", - "102": "dept.py", + "101": "tenant.py", + "102": "crm_supplier_hazard.py", "103": "pl_internal_customer.py", "104": "apply_crm_create_by_scope", - "105": "list_customers", - "106": "__init__.py", + "105": "pool_customer_assign", + "106": "site.py", "107": "apply_pl_scope", + "108": "statistics.py", "109": "Community 109", - "110": "Base", + "110": "plan_has_incomplete_hazard_cert_exists", "111": "Community 111", + "112": ".to_tenant_user_dict", "113": "quote_share_log.py", "114": "db_models.py", "115": "site.py", "116": "Community 116", + "117": "get_web_auth_menu_codes", "118": "Community 118", "119": "Community 119", + "120": "sqlalchemy_exception_handler", + "121": "Session", "122": "Community 122", - "125": "Community 125", "126": "customer_pool.py", "129": "BaseStorage", "134": "Community 134", @@ -132,16 +136,12 @@ "151": "Community 151", "154": "response.py", "159": "customer_update", - "160": "register_local_callback", "162": ".to_tenant_user_dict", "164": "get_client_ip", "166": "code:block1 (/iflytek/shanxia2.0/backend)", "170": "test_quote_approver_setting.py", - "171": "minio_url.py", "173": "resolve_create_time_bounds", - "174": "register_local_callback", "179": "test_pl_vehicle_personnel_photo_schema.py", - "182": "statistics.py", "188": "get_client_ip", "206": "crm_quote_pdf.py", "207": "shanxia2.0 后端骨架(FastAPI)", diff --git a/backend/graphify-out/2026-08-20/GRAPH_REPORT.md b/backend/graphify-out/2026-08-20/GRAPH_REPORT.md index 190cc1b40..802fbc1e0 100644 --- a/backend/graphify-out/2026-08-20/GRAPH_REPORT.md +++ b/backend/graphify-out/2026-08-20/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - backend (2026-08-20) ## Corpus Check -- 334 files · ~218,755 words +- 332 files · ~220,574 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 4524 nodes · 16752 edges · 172 communities (156 shown, 16 thin omitted) -- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 748 edges (avg confidence: 0.62) +- 4575 nodes · 16969 edges · 172 communities (156 shown, 16 thin omitted) +- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 776 edges (avg confidence: 0.62) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `a79e8a3e` +- Built from commit: `80545263` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -105,35 +105,39 @@ - [[_COMMUNITY_Community 87|Community 87]] - [[_COMMUNITY_CrmProduct|CrmProduct]] - [[_COMMUNITY_pl_ocr_service.py|pl_ocr_service.py]] -- [[_COMMUNITY_SysApiRequestLog|SysApiRequestLog]] -- [[_COMMUNITY_pl_vehicle_recharge_service.py|pl_vehicle_recharge_service.py]] +- [[_COMMUNITY_WechatMessageService|WechatMessageService]] +- [[_COMMUNITY_opportunity_product.py|opportunity_product.py]] - [[_COMMUNITY_Community 92|Community 92]] -- [[_COMMUNITY_list_products|list_products]] +- [[_COMMUNITY_api_request_log_middleware.py|api_request_log_middleware.py]] - [[_COMMUNITY_assert_contract_editable_for_update|assert_contract_editable_for_update]] -- [[_COMMUNITY_Community 95|Community 95]] -- [[_COMMUNITY___init__.py|__init__.py]] +- [[_COMMUNITY_test_pl_public_link_archived.py|test_pl_public_link_archived.py]] +- [[_COMMUNITY_opportunity_follow.py|opportunity_follow.py]] - [[_COMMUNITY__ensure_subpack_slip_no|_ensure_subpack_slip_no]] - [[_COMMUNITY_LocalStorage|LocalStorage]] - [[_COMMUNITY_QiniuStorage|QiniuStorage]] - [[_COMMUNITY_price_letter_detail|price_letter_detail]] -- [[_COMMUNITY_list_product_options|list_product_options]] -- [[_COMMUNITY_dept.py|dept.py]] +- [[_COMMUNITY_tenant.py|tenant.py]] +- [[_COMMUNITY_crm_supplier_hazard.py|crm_supplier_hazard.py]] - [[_COMMUNITY_pl_internal_customer.py|pl_internal_customer.py]] - [[_COMMUNITY_apply_crm_create_by_scope|apply_crm_create_by_scope]] -- [[_COMMUNITY_list_customers|list_customers]] -- [[_COMMUNITY___init__.py|__init__.py]] +- [[_COMMUNITY_pool_customer_assign|pool_customer_assign]] +- [[_COMMUNITY_site.py|site.py]] - [[_COMMUNITY_apply_pl_scope|apply_pl_scope]] +- [[_COMMUNITY_statistics.py|statistics.py]] - [[_COMMUNITY_Community 109|Community 109]] -- [[_COMMUNITY_Base|Base]] +- [[_COMMUNITY_plan_has_incomplete_hazard_cert_exists|plan_has_incomplete_hazard_cert_exists]] - [[_COMMUNITY_Community 111|Community 111]] +- [[_COMMUNITY_.to_tenant_user_dict|.to_tenant_user_dict]] - [[_COMMUNITY_quote_share_log.py|quote_share_log.py]] - [[_COMMUNITY_db_models.py|db_models.py]] - [[_COMMUNITY_site.py|site.py]] - [[_COMMUNITY_Community 116|Community 116]] +- [[_COMMUNITY_get_web_auth_menu_codes|get_web_auth_menu_codes]] - [[_COMMUNITY_Community 118|Community 118]] - [[_COMMUNITY_Community 119|Community 119]] +- [[_COMMUNITY_sqlalchemy_exception_handler|sqlalchemy_exception_handler]] +- [[_COMMUNITY_Session|Session]] - [[_COMMUNITY_Community 122|Community 122]] -- [[_COMMUNITY_Community 125|Community 125]] - [[_COMMUNITY_customer_pool.py|customer_pool.py]] - [[_COMMUNITY_BaseStorage|BaseStorage]] - [[_COMMUNITY_Community 134|Community 134]] @@ -148,16 +152,12 @@ - [[_COMMUNITY_Community 151|Community 151]] - [[_COMMUNITY_response.py|response.py]] - [[_COMMUNITY_customer_update|customer_update]] -- [[_COMMUNITY_register_local_callback|register_local_callback]] - [[_COMMUNITY_.to_tenant_user_dict|.to_tenant_user_dict]] - [[_COMMUNITY_get_client_ip|get_client_ip]] - [[_COMMUNITY_codeblock1 (iflytekshanxia2.0backend)|code:block1 (/iflytek/shanxia2.0/backend)]] - [[_COMMUNITY_test_quote_approver_setting.py|test_quote_approver_setting.py]] -- [[_COMMUNITY_minio_url.py|minio_url.py]] - [[_COMMUNITY_resolve_create_time_bounds|resolve_create_time_bounds]] -- [[_COMMUNITY_register_local_callback|register_local_callback]] - [[_COMMUNITY_test_pl_vehicle_personnel_photo_schema.py|test_pl_vehicle_personnel_photo_schema.py]] -- [[_COMMUNITY_statistics.py|statistics.py]] - [[_COMMUNITY_get_client_ip|get_client_ip]] - [[_COMMUNITY_crm_quote_pdf.py|crm_quote_pdf.py]] - [[_COMMUNITY_shanxia2.0 后端骨架(FastAPI)|shanxia2.0 后端骨架(FastAPI)]] @@ -179,18 +179,20 @@ - [[_COMMUNITY_PlanResourceSnapshotMixin|PlanResourceSnapshotMixin]] ## God Nodes (most connected - your core abstractions) -1. `BaseModel` - 452 edges -2. `get_tenant_no()` - 350 edges -3. `success_response()` - 268 edges -4. `DbUserContext` - 254 edges -5. `error_response()` - 247 edges -6. `generate_uuid()` - 194 edges +1. `BaseModel` - 456 edges +2. `get_tenant_no()` - 352 edges +3. `success_response()` - 269 edges +4. `DbUserContext` - 257 edges +5. `error_response()` - 248 edges +6. `generate_uuid()` - 196 edges 7. `BxUserContext` - 188 edges 8. `crm_user_info()` - 137 edges 9. `assert_row_deletable_by_creator()` - 83 edges 10. `ApiResponse` - 80 edges ## Surprising Connections (you probably didn't know these) +- `BackfillRule` --uses--> `Settings` [INFERRED] + scripts/migrate_crm_sys_oss.py → app/core/config.py - `MigrationStats` --uses--> `Settings` [INFERRED] scripts/migrate_bx_data.py → app/core/config.py - `StepStats` --uses--> `Settings` [INFERRED] @@ -199,8 +201,6 @@ scripts/migrate_crm_clue.py → app/core/config.py - `StepStats` --uses--> `Settings` [INFERRED] scripts/migrate_crm_clue.py → app/core/config.py -- `MigrationStats` --uses--> `Settings` [INFERRED] - scripts/migrate_crm_contract.py → app/core/config.py ## Import Cycles - None detected. @@ -208,116 +208,112 @@ ## Communities (172 total, 16 thin omitted) ### Community 0 - "Community 0" -Cohesion: 0.06 -Nodes (85): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+77 more) +Cohesion: 0.11 +Nodes (42): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+34 more) ### Community 1 - "Community 1" Cohesion: 0.08 -Nodes (38): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, 运营端角色守卫:admin / super_admin 可访问。, require_admin_or_super_admin(), ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody (+30 more) +Nodes (38): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody (+30 more) ### Community 2 - "Community 2" Cohesion: 0.16 Nodes (29): _apply_inventory_product_update(), _apply_inventory_update(), _base_query(), create_inventory(), create_link_for_plan(), delete_inventory(), _generate_batch_no(), _get_inventory() (+21 more) ### Community 3 - "Community 3" -Cohesion: 0.08 -Nodes (57): attachment_preview_url(), create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite(), create_post(), create_role_management() (+49 more) +Cohesion: 0.09 +Nodes (79): attachment_download_url(), attachment_preview_url(), create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite(), create_post() (+71 more) ### Community 4 - "Community 4" -Cohesion: 0.09 -Nodes (76): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+68 more) +Cohesion: 0.12 +Nodes (61): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+53 more) ### Community 5 - "Community 5" Cohesion: 0.05 -Nodes (116): archive_plan(), cancel_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan(), create_plan_full(), delete_plan() (+108 more) +Nodes (75): _build_driver_url(), cancel_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan_full(), delete_plan(), _determine_plan_type() (+67 more) ### Community 6 - "Community 6" -Cohesion: 0.09 -Nodes (55): customer_create(), customer_update(), follow_by_customer(), follow_detail(), assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer() (+47 more) +Cohesion: 0.11 +Nodes (48): assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer(), create_customer(), deal_customer(), _enrich_user_names(), _ensure_customer_in_scope() (+40 more) ### Community 7 - "Community 7" -Cohesion: 0.04 -Nodes (161): category_add(), category_delete(), category_tree(), category_update(), clue_assign(), clue_check_convert(), clue_check_duplicate(), clue_convert() (+153 more) +Cohesion: 0.03 +Nodes (201): clue_assign(), clue_convert(), clue_create(), clue_delete(), clue_detail(), clue_export(), clue_follow_create(), clue_follow_delete() (+193 more) ### Community 8 - "Community 8" -Cohesion: 0.10 -Nodes (68): register_quote_routes(), accept_quote(), assert_quote_editable_for_update(), _build_quote_filters(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value() (+60 more) +Cohesion: 0.13 +Nodes (50): register_quote_routes(), accept_quote(), assert_quote_editable_for_update(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value(), _enrich_contact_fields() (+42 more) ### Community 9 - "Community 9" -Cohesion: 0.07 -Nodes (63): download_reimburse_import_template(), build_annotated_result_bytes(), build_applicant_label(), build_expense_path_labels(), build_import_template_bytes(), cell_str(), _ids_visible_in_web_tree(), import_reimburse_workbook() (+55 more) +Cohesion: 0.10 +Nodes (49): download_reimburse_import_template(), build_annotated_result_bytes(), build_applicant_label(), build_expense_path_labels(), build_import_template_bytes(), cell_str(), _ids_visible_in_web_tree(), import_reimburse_workbook() (+41 more) ### Community 10 - "Community 10" -Cohesion: 0.13 -Nodes (34): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), _generate_settlement_no(), get_settlement(), get_settlement_approval_flow() (+26 more) +Cohesion: 0.14 +Nodes (15): BxAdvanceApply, BxAdvanceApproval, AdvanceService, Any, Session, 同一节点多次审批时,取 approval_time 最新的一条作为当前节点状态。, 返回全部审批动作,按时间正序排列,用于展示完整审批历史。, current_month_bounds() (+7 more) ### Community 11 - "Community 11" -Cohesion: 0.15 -Nodes (40): PlVehicleUreaApply, PlVehicleUreaDisburse, 车辆尿素申请 pl_vehicle_urea_apply, 车辆尿素发放登记 pl_vehicle_urea_disburse, Decimal, VehicleUreaApplyCreate, VehicleUreaApplyRead, VehicleUreaApplyUpdate (+32 more) +Cohesion: 0.10 +Nodes (55): cancel_apply(), create_apply(), create_disburse(), delete_applies(), delete_disburses(), get_apply(), get_disburse(), list_applies() (+47 more) ### Community 12 - "Community 12" -Cohesion: 0.05 -Nodes (58): create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), Session, submit_leave() (+50 more) +Cohesion: 0.06 +Nodes (64): contact_add(), contact_delete(), contact_update(), customer_delete(), BaseModel, AttachmentUploadResponse, ChangePasswordRequest, Config (+56 more) ### Community 13 - "Community 13" -Cohesion: 0.14 -Nodes (17): create_expense_item(), delete_expense_item(), get_expense_item(), get_expense_item_tree(), Session, update_expense_item(), _auto_fill_create_dept_id(), get_db() (+9 more) +Cohesion: 0.20 +Nodes (13): create_expense_item(), delete_expense_item(), get_expense_item(), get_expense_item_tree(), Session, update_expense_item(), BxExpenseItem, _coerce_id() (+5 more) ### Community 14 - "Community 14" -Cohesion: 0.14 -Nodes (22): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), Session, save_workflow_nodes(), update_workflow() (+14 more) +Cohesion: 0.09 +Nodes (36): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+28 more) ### Community 15 - "Community 15" -Cohesion: 0.11 -Nodes (16): BxReimburseApply, BxReimburseApproval, BxReimburseDetail, BxReimburseInvoice, BxReimburseOffset, 报销单勾选的发票附件(同一发票可勾选多个附件,各占一条)。, ReimburseInvoiceBriefOut, ReimburseInvoiceLinkIn (+8 more) +Cohesion: 0.10 +Nodes (42): approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse(), delete_reimburse(), get_approval_history(), get_approvals(), get_generated_title() (+34 more) ### Community 16 - "Community 16" -Cohesion: 0.09 -Nodes (60): cancel_apply(), create_apply(), create_record(), delete_applies(), delete_records(), get_apply(), get_record(), list_applies() (+52 more) +Cohesion: 0.10 +Nodes (64): cancel_apply(), create_apply(), create_record(), delete_applies(), delete_records(), get_apply(), get_record(), list_applies() (+56 more) ### Community 17 - "Community 17" -Cohesion: 0.04 -Nodes (81): SoftDeleteModel, BizAttachment, PlDriver, PlFreightSettlementTransport, PlInboundOrder, PlInboundOrderItem, PlInboundOrderItemBrandQty, PlInventory (+73 more) +Cohesion: 0.18 +Nodes (21): allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title(), is_auto_reimburse_title(), parse_optional_date(), parse_reimburse_date(), preview_reimburse_title_seq() (+13 more) ### Community 18 - "Community 18" -Cohesion: 0.10 -Nodes (38): advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _fill_offset_amounts(), get_advance() (+30 more) +Cohesion: 0.08 +Nodes (63): advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _fill_offset_amounts(), get_advance() (+55 more) ### Community 19 - "Community 19" -Cohesion: 0.12 -Nodes (35): approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse(), delete_reimburse(), get_approval_history(), get_approvals(), get_generated_title() (+27 more) +Cohesion: 0.13 +Nodes (11): _coerce_id(), OffsetItem, PaymentFinanceStatsOut, 报销单勾选的发票附件(同一发票可勾选多个附件,各占一条)。, ReimburseApplyCreate, ReimburseApprovalOut, ReimburseApproverPendingStatsOut, ReimburseDetailCreate (+3 more) ### Community 20 - "Community 20" -Cohesion: 0.12 -Nodes (37): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), create_from_opportunity(), create_from_quote(), download_contract_pdf(), export_contracts(), finish_contract() (+29 more) +Cohesion: 0.20 +Nodes (25): _apply_weighing_product_update(), _apply_weighing_update(), _base_query(), create_weighing(), delete_weighing(), _get_weighing(), get_weighing_related(), list_weighing() (+17 more) ### Community 21 - "Community 21" -Cohesion: 0.10 -Nodes (51): _alias_row_to_dict(), _assert_brand_deletable(), barcode_exists(), _brand_row_to_dict(), _build_category_tree(), category_code_exists(), _category_row_to_dict(), _collect_category_with_ancestors() (+43 more) +Cohesion: 0.08 +Nodes (60): _alias_row_to_dict(), _assert_brand_deletable(), barcode_exists(), _brand_row_to_dict(), _build_category_tree(), category_code_exists(), _category_row_to_dict(), _collect_category_with_ancestors() (+52 more) ### Community 22 - "Community 22" Cohesion: 0.08 Nodes (28): parse_admin_request_json(), Any, Request, 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, ApiCryptoError, _b64url_decode(), _b64url_encode() (+20 more) -### Community 23 - "Community 23" -Cohesion: 0.11 -Nodes (7): convert_heic_to_jpeg(), OSSStorage, process_image_content(), QiniuStorage, 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS (, 将 HEIC/HEIF 格式转换为 JPEG 格式, 处理图片内容,如果是 HEIC 格式则转换为 JPEG - ### Community 24 - "Community 24" -Cohesion: 0.15 -Nodes (39): _apply_plan_product_update(), _apply_plan_update(), AutoGenerateMonthlyResult, _base_query(), create_plan(), delete_plan(), _generate_plan_no(), get_plan() (+31 more) +Cohesion: 0.13 +Nodes (44): _apply_plan_product_update(), _apply_plan_update(), AutoGenerateMonthlyResult, _base_query(), create_plan(), delete_plan(), _generate_plan_no(), get_plan() (+36 more) ### Community 25 - "Community 25" -Cohesion: 0.15 -Nodes (23): approve_carrier(), create_carrier(), delete_carrier(), delete_driver(), delete_personnel(), delete_vehicle(), get_carrier(), list_carriers() (+15 more) +Cohesion: 0.26 +Nodes (12): list_share_logs(), _parse_user_agent(), Any, Session, CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, Java: statisticsVisits, 简易 User-Agent 解析(替代 Hutool UserAgentUtil), Java: queryLogsByQuoteId (+4 more) ### Community 26 - "Community 26" -Cohesion: 0.07 -Nodes (72): day_detail(), delete_assignment(), duty_user_options(), _enrich_assign_names(), month_summary(), Session, 指定用户时补全 personName(用 nick_name)。, 值班可安排人员:仅「值班人员」角色下的启用用户。 (+64 more) +Cohesion: 0.20 +Nodes (31): DutyAssignment, DutyDay, DutySlot, 值班排班模型 — docs/superpowers/specs/2026-08-14-duty-schedule-design.md, assert_user_is_duty_staff(), _assignment_dict(), build_public_url(), _count_active_assignments() (+23 more) ### Community 27 - "Community 27" -Cohesion: 0.10 -Nodes (34): CRM 报价单 API 路由 — 挂接到 crm.router, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), QuoteApproverSettingSaveBody, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody (+26 more) +Cohesion: 0.11 +Nodes (32): CRM 报价单 API 路由 — 挂接到 crm.router, QuoteApproverSettingSaveBody, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody, QuoteApprovalWithdrawBody, QuoteCreateBody (+24 more) ### Community 28 - "Community 28" Cohesion: 0.10 @@ -325,34 +321,34 @@ Nodes (57): PlFreightSettlement, PlFreightSettlementApproval, 运费结算表 pl ### Community 29 - "Community 29" Cohesion: 0.11 -Nodes (54): _apply_contract_entity_fields(), _build_contract_filters(), _build_contract_name_from_parties(), _build_customer_address(), _calc_amount_with_tax(), contract_no_exists(), _contract_period_key(), contract_row_to_dict() (+46 more) +Nodes (42): _apply_contract_entity_fields(), _build_contract_filters(), _build_contract_name_from_parties(), _build_customer_address(), _calc_amount_with_tax(), contract_no_exists(), _contract_period_key(), contract_row_to_dict() (+34 more) ### Community 30 - "Community 30" Cohesion: 0.16 Nodes (26): clear_target_categories(), compute_level(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+18 more) ### Community 31 - "Community 31" -Cohesion: 0.06 -Nodes (64): contact_add(), contact_delete(), contact_update(), opportunity_add(), opportunity_assign(), opportunity_batch_update_expect_date(), opportunity_batch_update_stage(), opportunity_change_stage() (+56 more) +Cohesion: 0.12 +Nodes (37): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), _generate_settlement_no(), get_settlement(), get_settlement_approval_flow() (+29 more) ### Community 32 - "Community 32" -Cohesion: 0.21 -Nodes (17): apply_crm_create_by_scope(), _apply_list_filters(), create_supplier_info(), list_all_supplier_info(), list_supplier_info(), Any, Session, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java (+9 more) +Cohesion: 0.13 +Nodes (35): create_clue_follow(), delete_clue_follow(), get_clue_follow(), get_follow_statistics(), list_clue_follows(), Any, Session, 更新线索跟进记录,必要时同步线索 next_time (+27 more) ### Community 33 - "Community 33" -Cohesion: 0.06 -Nodes (55): operlog_detail(), operlog_list(), Session, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info(), ApiRequestLogMiddleware, _claims_from_auth(), _format_body_bytes() (+47 more) +Cohesion: 0.18 +Nodes (17): get_oper_log_meta(), OperLogMeta, 请求级操作日志元数据(ContextVar), 供异步落库线程使用,避免 ContextVar 跨线程丢失。, set_oper_log_meta(), snapshot_oper_log_meta(), _format_summary(), oper_log() (+9 more) ### Community 34 - "Community 34" -Cohesion: 0.12 -Nodes (20): list_ethnics(), Any, Session, 民族码表 CRUD(全局 sys_ethnic), _row_to_dict(), 数据模型(与 docs/sql/shanxia2.0.sql 全库导出基线对齐的核心系统表), Web 管理端约定角色(由 sys_role.role_name 映射而来,非数据库枚举), 民族码表 sys_ethnic(国标 GB/T 3304,全局) (+12 more) +Cohesion: 0.40 +Nodes (9): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+1 more) ### Community 35 - "Community 35" Cohesion: 0.18 Nodes (36): clear_portal_workflow(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_bx_user_mapping(), load_runtime_settings() (+28 more) ### Community 36 - "Community 36" -Cohesion: 0.16 +Cohesion: 0.15 Nodes (27): 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password(), change_password(), create_user(), get_user(), get_user_with_relations(), _hash_password(), list_post_ids_for_user() (+19 more) ### Community 37 - "Community 37" @@ -360,44 +356,44 @@ Cohesion: 0.20 Nodes (24): count_source_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+16 more) ### Community 38 - "Community 38" -Cohesion: 0.12 -Nodes (15): _db_pool_keepalive_loop(), _error_json(), lifespan(), Exception, Request, 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, 定期 ping MySQL,避免远程库/NAT 回收空闲 TCP 后首请求长时间卡住。 (+7 more) +Cohesion: 0.22 +Nodes (10): Config, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), Any, 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。, Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。 (+2 more) ### Community 39 - "Community 39" -Cohesion: 0.13 -Nodes (42): clue_follow_detail(), assign_clues(), check_convert(), check_duplicate_clue(), convert_clue(), create_clue(), _enrich_user_names(), _ensure_clue_in_scope() (+34 more) +Cohesion: 0.22 +Nodes (28): assign_clues(), check_convert(), check_duplicate_clue(), convert_clue(), create_clue(), _enrich_user_names(), _ensure_clue_in_scope(), get_clue() (+20 more) ### Community 40 - "Community 40" Cohesion: 0.16 -Nodes (29): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), execute_change(), export_contract_changes(), export_contract_templates(), _get_change_row() (+21 more) +Nodes (34): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), create_contract_template(), _enrich_change_rows(), execute_change(), export_contract_changes() (+26 more) ### Community 41 - "Community 41" -Cohesion: 0.12 -Nodes (20): BxAdvanceApply, BxAdvanceApproval, AdvanceService, Any, Session, 同一节点多次审批时,取 approval_time 最新的一条作为当前节点状态。, 返回全部审批动作,按时间正序排列,用于展示完整审批历史。, filter_current_cycle_approvals() (+12 more) +Cohesion: 0.14 +Nodes (24): PlTransportProductBrandQty, PlTransportProductFeedback, 运输单按产品回传 pl_transport_product_feedback, 运输单产品回传品牌数量 pl_transport_product_brand_qty, _dict_field(), format_brand_qty_summary(), load_transport_driver_product_feedbacks(), persist_io_item_brand_qtys() (+16 more) ### Community 42 - "Community 42" -Cohesion: 0.05 -Nodes (103): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+95 more) +Cohesion: 0.19 +Nodes (32): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+24 more) ### Community 43 - "Community 43" -Cohesion: 0.12 -Nodes (25): create_invoice(), delete_invoice(), get_mine_wallet_summary(), list_invoice_ledgers(), list_invoice_wallets(), list_invoices(), Request, Session (+17 more) +Cohesion: 0.09 +Nodes (34): create_invoice(), delete_invoice(), get_mine_wallet_summary(), list_invoice_ledgers(), list_invoice_wallets(), list_invoices(), Request, Session (+26 more) ### Community 44 - "Community 44" -Cohesion: 0.19 -Nodes (32): create_tenant(), DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, MenuCreateBody (+24 more) +Cohesion: 0.10 +Nodes (33): build_dict_value_from_label(), ensure_dict_data(), format_hhmm(), format_time_label(), grab(), join_work_plans(), list_duty_staff_users(), normalize_person_name() (+25 more) ### Community 45 - "Community 45" -Cohesion: 0.16 -Nodes (21): _build_page(), _get_by_token(), _make_handlers(), _models(), Session, 运输计划 · 入库/出库单现场免登录公共 API, IoOrderItemPatch, IoOrderItemRead (+13 more) +Cohesion: 0.08 +Nodes (25): category_add(), category_delete(), category_tree(), category_update(), product_add(), product_delete(), product_detail(), product_options() (+17 more) ### Community 46 - "Community 46" -Cohesion: 0.20 -Nodes (27): apply_biz_backfill(), BizRef, build_biz_index(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str() (+19 more) +Cohesion: 0.19 +Nodes (28): apply_biz_backfill(), BackfillRule, BizRef, build_biz_index(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows() (+20 more) ### Community 47 - "Community 47" -Cohesion: 0.18 -Nodes (22): ReimburseDetailOut, allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title(), is_auto_reimburse_title(), parse_optional_date(), parse_reimburse_date() (+14 more) +Cohesion: 0.14 +Nodes (30): PlanContractGapRead, PlanContractLink, PlanProductRead, is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免), build_plan_contract_gap_read(), compute_contract_gap_sides(), _demander_gap_expr() (+22 more) ### Community 48 - "Community 48" Cohesion: 0.29 @@ -408,72 +404,72 @@ Cohesion: 0.49 Nodes (10): clue_statistics_level(), _apply_create_range(), _base_query(), get_clue_level_statistics(), get_clue_overview_statistics(), get_clue_owner_statistics(), get_clue_source_statistics(), get_clue_trend_statistics() (+2 more) ### Community 50 - "Community 50" -Cohesion: 0.21 -Nodes (15): BxInvoiceLedger, BxInvoiceWalletSummary, 报销(bx)模块数据模型 — 对齐 docs/sql/20260606_bx_tables.sql, InvoiceLedgerService, Any, Decimal, Session, should_skip_release() (+7 more) +Cohesion: 0.09 +Nodes (43): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), create_from_opportunity(), create_from_quote(), download_contract_pdf(), _ensure_contract_in_scope(), export_contracts() (+35 more) ### Community 51 - "Community 51" -Cohesion: 0.11 -Nodes (31): menu_badge_stats(), Session, Session, recognize_cert(), RecognizeCertBody, RecognizeCertResult, cancel_apply(), create_apply() (+23 more) +Cohesion: 0.10 +Nodes (38): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no(), menu_badge_stats(), Session, Session (+30 more) ### Community 52 - "Community 52" -Cohesion: 0.20 -Nodes (23): advance_issue_stats(), batch_offset(), export_advance_issues(), issue_advance(), list_advance_issues(), list_advance_offset_records(), list_pending_payments(), list_processed_payments() (+15 more) +Cohesion: 0.23 +Nodes (12): CRM 模块 Excel 导出列定义(字段与字典类型对齐 Java *Vo @ExcelDictFormat)。, _build_workbook(), DictLabelResolver, export_rows_to_xlsx_response(), ExportColumn, Any, Excel 导出工具:集中处理字典 code → label(对齐 Java ExcelDictConvert / ExcelDictPreloadConver, CRM 列表导出统一入口:表头 + 行数据 + 字典 label 转换 + 文件流响应。 (+4 more) ### Community 53 - "Community 53" -Cohesion: 0.19 -Nodes (14): parse_resource_snapshot(), Any, 运输计划 - 安排运输时车辆/人员/证件资源快照 Schema, 从 ORM 文本列或 dict 解析快照。, SnapshotCertRead, SnapshotPersonnelRow, TransportResourceSnapshot, build_personnel_summary() (+6 more) +Cohesion: 0.34 +Nodes (32): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, MenuCreateBody (+24 more) ### Community 54 - "Community 54" Cohesion: 0.26 Nodes (23): _get_by_plan(), get_inbound(), get_inbound_by_plan(), _get_order(), get_outbound(), get_outbound_by_plan(), inbound_site_url(), list_inbound() (+15 more) ### Community 55 - "Community 55" -Cohesion: 0.28 -Nodes (11): assert_products_allowed_for_supplier(), enrich_products_with_hazard_flags(), get_supplier_hazard_flags(), product_allowed(), Any, Session, 批量回填明细行 isToxic/isExplosive(来自产品主数据,供前端切换主体剔除)。, test_dual_requires_both() (+3 more) +Cohesion: 0.12 +Nodes (29): get_pool_record(), list_pool_records(), Any, Session, _row_to_dict(), total_pages(), delete_pool_rules(), execute_pool_rules() (+21 more) ### Community 56 - "Community 56" -Cohesion: 0.32 -Nodes (10): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), CrmContractApproverSetting, CrmProductAlias (+2 more) +Cohesion: 0.18 +Nodes (31): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), legacy_parent_id(), load_oss_id_to_url(), load_runtime_settings() (+23 more) ### Community 57 - "Community 57" -Cohesion: 0.40 -Nodes (9): create_oss(), create_oss(), get_oss_by_id(), get_oss_by_url(), Session, 按主键 id 查询附件(兼容旧 CRM 雪花 oss_id 迁入后的记录), 将 fileUrl 或旧 CRM 数字 ossId 解析为 MinIO 相对路径。 门户新上传把相对路径写入业务字段;迁入合同附件仍存数字 ossId, resolve_storage_path() (+1 more) +Cohesion: 0.47 +Nodes (8): create_oss(), get_oss_by_id(), get_oss_by_url(), Session, 按主键 id 查询附件(兼容旧 CRM 雪花 oss_id 迁入后的记录), 将 fileUrl 或旧 CRM 数字 ossId 解析为 MinIO 相对路径。 门户新上传把相对路径写入业务字段;迁入合同附件仍存数字 ossId, resolve_storage_path(), SysOss ### Community 58 - "Community 58" -Cohesion: 0.28 -Nodes (17): _address_to_read(), _build_address_query(), create_transport_address(), delete_transport_address(), _get_address(), get_transport_address(), list_all_transport_addresses(), list_transport_addresses() (+9 more) +Cohesion: 0.18 +Nodes (29): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+21 more) ### Community 59 - "Community 59" Cohesion: 0.20 Nodes (28): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+20 more) ### Community 60 - "Community 60" -Cohesion: 0.10 -Nodes (19): 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方详情 — Java: CrmSupplierInfoController.getInfo, 新增供方 — Java: CrmSupplierInfoController.add, 修改供方 — Java: CrmSupplierInfoController.edit, 删除供方 — Java: CrmSupplierInfoController.remove, 导出供方列表 — Java: CrmSupplierInfoController.export, supplier_info_add(), supplier_info_delete() (+11 more) +Cohesion: 0.07 +Nodes (33): 分页查询供方列表 — Java: CrmSupplierInfoController.list, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方详情 — Java: CrmSupplierInfoController.getInfo, 新增供方 — Java: CrmSupplierInfoController.add, 修改供方 — Java: CrmSupplierInfoController.edit, 删除供方 — Java: CrmSupplierInfoController.remove, 导出供方列表 — Java: CrmSupplierInfoController.export, supplier_info_add() (+25 more) ### Community 61 - "Community 61" -Cohesion: 0.18 -Nodes (27): DbInboundOutbound, PlTransportDbLink, 运输-地磅出入库关联 pl_transport_db_link, _apply_plan_quantity_delta(), _create_db_inventory(), find_monthly_db_plan(), _generate_batch_no(), _inventory_has_weighing_slip() (+19 more) +Cohesion: 0.17 +Nodes (31): DbInboundOutbound, PlTransportDbLink, 运输-地磅出入库关联 pl_transport_db_link, _apply_plan_quantity_delta(), _create_db_inventory(), _create_db_plan(), DibangInventoryLinkResult, find_monthly_db_plan() (+23 more) ### Community 62 - "Community 62" -Cohesion: 0.19 -Nodes (26): _apply_weighing_product_update(), _apply_weighing_update(), _base_query(), create_weighing(), delete_weighing(), _get_weighing(), get_weighing_related(), list_weighing() (+18 more) +Cohesion: 0.27 +Nodes (10): apply_product_snapshot_to_plan(), ProductSnapshot, Session, 地磅模块 — CRM 产品解析与快照写入。, 校验 CRM 产品并返回名称/规格快照。新建单据 product_id 必填。 require_on_shelf=False 用于运输计划联动地磅等历, resolve_crm_product(), _product(), resolve_crm_product:运输联动场景允许已下架产品。 (+2 more) ### Community 63 - "Community 63" Cohesion: 0.38 Nodes (14): _cargo_stats(), get_dashboard_stats(), get_inbound_by_cargo(), get_inbound_by_partner_cargo(), get_outbound_by_cargo(), get_outbound_by_partner_cargo(), _partner_cargo_stats(), Session (+6 more) ### Community 64 - "Community 64" -Cohesion: 0.27 -Nodes (17): get_personnel(), paste_recognize_commit(), PlPersonnel, ConflictAction, PasteCommitBody, PasteCommitResult, PastePersonnelIn, PasteVehicleIn (+9 more) +Cohesion: 0.18 +Nodes (18): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), Session, save_workflow_nodes(), update_workflow() (+10 more) ### Community 65 - "Community 65" Cohesion: 0.10 Nodes (58): cancel_apply(), create_apply(), create_process(), delete_applies(), delete_processes(), get_apply(), get_process(), list_applies() (+50 more) ### Community 66 - "Community 66" -Cohesion: 0.12 -Nodes (24): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+16 more) +Cohesion: 0.15 +Nodes (21): day_detail(), delete_assignment(), duty_user_options(), _enrich_assign_names(), month_summary(), Session, 指定用户时补全 personName(用 nick_name)。, 值班可安排人员:仅「值班人员」角色下的启用用户。 (+13 more) ### Community 67 - "Community 67" Cohesion: 0.12 @@ -481,23 +477,23 @@ Nodes (36): get_password_hash(), Namespace, build_merged_users(), bx_role_labels ### Community 68 - "Community 68" Cohesion: 0.33 -Nodes (14): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), Any (+6 more) +Nodes (13): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), Any (+5 more) ### Community 69 - "Community 69" Cohesion: 0.14 -Nodes (28): _append_user_scope_conditions(), apply_data_scope(), assert_row_in_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3 (+20 more) +Nodes (26): _append_user_scope_conditions(), apply_data_scope(), assert_row_in_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3 (+18 more) ### Community 70 - "Community 70" Cohesion: 0.18 Nodes (18): align_contract_no_to_sign_date(), generate_contract_no(), date, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} 流水与撞号检测须含软删:uk_contr, 标准编号替换日期段,保留序号;非标准返回 None。, 将标准合同编号日期段对齐签订日;撞号则序号顺延(含软删查重)。 非标准编号原样返回。无签订日则原样返回。, replace_contract_no_date(), _mock_last_contract() (+10 more) ### Community 71 - "Community 71" -Cohesion: 0.20 -Nodes (24): create_personnel(), list_personnel(), list_vehicles(), _personnel_to_detail(), _personnel_to_read(), 运输计划管理 - 基础数据 API(承运商、车辆、人员), update_personnel(), _vehicle_to_read() (+16 more) +Cohesion: 0.17 +Nodes (20): operlog_detail(), operlog_list(), Session, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info(), 获取用户所有角色的数据权限配置。 返回: [{"data_scope": str, "details": [SysRoleDataScopeDetai, _resolve_user_role_scopes(), _apply_oper_log_scope() (+12 more) ### Community 72 - "Community 72" -Cohesion: 0.23 -Nodes (19): contact_by_customer(), contact_detail(), contact_set_primary(), create_contact(), get_contact(), list_contacts_by_customer(), _parse_optional_date(), Any (+11 more) +Cohesion: 0.15 +Nodes (32): create_contact(), get_contact(), list_contacts_by_customer(), _parse_optional_date(), Any, date, Session, _row_to_dict() (+24 more) ### Community 73 - "Community 73" Cohesion: 0.20 @@ -508,12 +504,12 @@ Cohesion: 0.31 Nodes (3): Any, Session, WorkflowEngine ### Community 75 - "apply_crm_create_by_scope" -Cohesion: 0.23 -Nodes (12): change_current_user_password(), get_current_user_profile(), public_quote_share(), Request, Session, 获取当前用户信息(与 sys_user 字段对应)。, 公开分享查看报价单 — Java: GET /share/{shareCode}(无 JWT), get_current_user() (+4 more) +Cohesion: 0.39 +Nodes (8): get_redis_client(), get_sync_redis_client(), Redis, 共享 Redis 客户端(同步:会话鉴权;异步:API 加密 nonce)。, 同步 Redis(auth 会话等,在线程池中调用)。, 异步 Redis(API 加密 nonce 等中间件)。, _redis_common_kwargs(), redis_enabled() ### Community 76 - "opportunity_follow.py" -Cohesion: 0.27 -Nodes (10): carrier_agreement_expired(), carrier_audit_approved(), carrier_eligible_for_transport(), carrier_qualification_complete(), date, 资质附件均为选填,保留函数签名供兼容调用。, _urls_nonempty(), validate_carrier_qualification_fields() (+2 more) +Cohesion: 0.30 +Nodes (10): PlCarrier, assert_carrier_eligible_for_transport(), carrier_audit_approved(), carrier_eligible_for_transport(), date, 资质附件均为选填,保留函数签名供兼容调用。, _urls_nonempty(), validate_carrier_qualification_fields() (+2 more) ### Community 77 - "Community 77" Cohesion: 0.11 @@ -524,157 +520,177 @@ Cohesion: 0.24 Nodes (18): _actor_ids(), _actor_names(), assert_row_deletable_by_creator(), assert_rows_deletable_by_creator(), can_delete_by_creator(), is_super_admin(), normalize_user_info(), Any (+10 more) ### Community 79 - "PlCarrier" -Cohesion: 0.49 -Nodes (10): apply_pl_scope(), Session, build_menu_badge_counts(), count_document_reminder_expired_pending(), count_freight_approval_pending(), count_freight_disburse_pending(), _count_pending_applies(), count_plan_archive_pending() (+2 more) +Cohesion: 0.06 +Nodes (63): 返回 (作废, 归档)。现场链接实际走入库/出库单公共页。, _resolve_io_order_link_flags(), _build_public_page(), _build_site_product_read(), _format_file_size(), get_public_site(), _get_site_link_by_token(), _parse_feedback_images() (+55 more) ### Community 80 - "resolve_crm_product" -Cohesion: 0.27 -Nodes (10): apply_product_snapshot_to_plan(), ProductSnapshot, Session, 地磅模块 — CRM 产品解析与快照写入。, 校验 CRM 产品并返回名称/规格快照。新建单据 product_id 必填。 require_on_shelf=False 用于运输计划联动地磅等历, resolve_crm_product(), _product(), resolve_crm_product:运输联动场景允许已下架产品。 (+2 more) +Cohesion: 0.13 +Nodes (27): PlInventoryTransaction, 库存流水表 pl_inventory_transaction, load_brand_qtys_by_plan_product_ids(), persist_plan_product_brand_qtys(), Any, Decimal, Session, 按计划产品明细 ID 批量加载归档品牌数量(brandId/brandName/qty)。 (+19 more) ### Community 81 - "customer_follow.py" -Cohesion: 0.28 -Nodes (8): invoice_info_by_customer(), _invoice_info_by_customer_impl(), invoice_info_delete(), invoice_info_list(), 按客户ID查询开票信息(与 by-customer 等价), InvoiceInfoByCustomerBody, InvoiceInfoDeleteBody, CRM 客户开票信息 Pydantic Schemas +Cohesion: 0.15 +Nodes (14): invoice_info_add(), invoice_info_by_customer(), _invoice_info_by_customer_impl(), invoice_info_delete(), invoice_info_list(), invoice_info_set_default(), invoice_info_update(), 按客户ID查询开票信息(与 by-customer 等价) (+6 more) ### Community 82 - "storage.py" -Cohesion: 0.39 -Nodes (8): get_redis_client(), get_sync_redis_client(), Redis, 共享 Redis 客户端(同步:会话鉴权;异步:API 加密 nonce)。, 同步 Redis(auth 会话等,在线程池中调用)。, 异步 Redis(API 加密 nonce 等中间件)。, _redis_common_kwargs(), redis_enabled() +Cohesion: 0.23 +Nodes (9): calc_age_from_chinese_id_card(), date, 从 18 位身份证号计算周岁。号码不完整或出生日期无效时返回 None。, 按 18 位身份证号重算 pl_personnel.age,仅更新算出值与库中不一致的记录。返回更新条数。, refresh_personnel_ages_from_id_card(), 每日凌晨重算 pl_personnel 年龄(有合法 18 位身份证号的记录)。, refresh_personnel_ages_job(), test_calc_age_from_18_digit_id() (+1 more) ### Community 83 - "Community 83" -Cohesion: 0.15 -Nodes (30): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), can_user_approve() (+22 more) +Cohesion: 0.14 +Nodes (32): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), can_user_approve() (+24 more) ### Community 84 - "Community 84" Cohesion: 0.23 Nodes (23): build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str(), main(), map_id() (+15 more) ### Community 85 - "allocate_next_biz_no" -Cohesion: 0.33 -Nodes (8): allocate_next_biz_no(), _format_biz_no(), _prefix_for(), datetime, Session, 业务协议号自动生成:XBCC / JZCC + YYYYMMDD + 6 位序号, 原子分配下一个业务协议号。 须在 create 事务内调用;使用 MySQL LAST_INSERT_ID 保证并发安全。, BizNoKind +Cohesion: 0.19 +Nodes (11): get_current_time(), parse_datetime(), datetime, allocate_next_biz_no(), _format_biz_no(), _prefix_for(), datetime, Session (+3 more) ### Community 86 - "Community 86" -Cohesion: 0.33 -Nodes (11): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+3 more) +Cohesion: 0.24 +Nodes (7): camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session, ModelType ### Community 87 - "Community 87" -Cohesion: 0.10 -Nodes (34): invalidate_all_approvals(), 作废该合同全部有效审批记录(含已通过/已拒绝),用于再编辑或重新提审。, approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals() (+26 more) +Cohesion: 0.11 +Nodes (32): approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals(), list_quote_approvals(), Any (+24 more) ### Community 88 - "CrmProduct" -Cohesion: 0.47 -Nodes (3): get_current_time(), parse_datetime(), datetime +Cohesion: 0.20 +Nodes (16): _claims_from_auth(), _format_body_bytes(), _persist_log(), Any, Request, 统一记录 API 请求/响应出入参的中间件, _redact_obj(), _schedule_persist_log() (+8 more) ### Community 89 - "pl_ocr_service.py" Cohesion: 0.19 Nodes (22): PlOcrUsageMonth, 阿里云 OCR 月度调用计数 pl_ocr_usage_month(按自然月全局统计), assert_quota_available(), _build_ocr_client(), compress_image_bytes(), current_usage_month(), _first_attachment_url(), get_or_create_usage_row() (+14 more) -### Community 90 - "SysApiRequestLog" -Cohesion: 0.40 -Nodes (5): _avatar_url_field(), _build_user_info_payload(), 与 web-admin 静态路由 meta.roles(admin/super_admin)对齐的单元素数组。, 与 web-admin `userInfo` 字段约定一致。, _web_role_list() +### Community 90 - "WechatMessageService" +Cohesion: 0.15 +Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n, 发送催单通知给配送员 Args: deliver_openid: 配送员openid, 发送模板消息 Args: openid: 用户openid template_ (+1 more) -### Community 91 - "pl_vehicle_recharge_service.py" -Cohesion: 0.29 -Nodes (16): ensure_crm_customer_linked_row_in_scope(), ensure_crm_owner_row_in_scope(), Session, CRM 数据权限辅助(负责人 owner_user_id + 标准 create_by/create_dept_id)。, 客户子表(开票信息等):先校验关联客户 owner scope,否则校验 create_by。, _clear_default_for_customer(), create_invoice_info(), get_invoice_info() (+8 more) +### Community 91 - "opportunity_product.py" +Cohesion: 0.51 +Nodes (10): apply_site_feedback(), OrderItem, _header(), _item(), test_apply_site_feedback_does_not_reset_first_submitted_at(), test_apply_site_feedback_keeps_in_progress_when_requested(), test_apply_site_feedback_rejects_already_voided(), test_apply_site_feedback_rejects_invalid_status() (+2 more) ### Community 92 - "Community 92" -Cohesion: 0.28 -Nodes (14): _assert_users_exist(), get_setting(), join_approver_ids(), parse_approver_ids(), prefill_approver_ids(), Any, Session, 返回可预填的审批人 ID 列表;不可用则空列表。 (+6 more) +Cohesion: 0.20 +Nodes (21): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), _assert_users_exist(), get_setting() (+13 more) -### Community 93 - "list_products" -Cohesion: 0.50 -Nodes (4): list_roles_for_select(), 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, _map_role_name_to_web(), 将 sys_role.role_name 映射为 web-admin 使用的 role 字符串。 +### Community 93 - "api_request_log_middleware.py" +Cohesion: 0.11 +Nodes (7): convert_heic_to_jpeg(), OSSStorage, process_image_content(), QiniuStorage, 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS (, 将 HEIC/HEIF 格式转换为 JPEG 格式, 处理图片内容,如果是 HEIC 格式则转换为 JPEG ### Community 94 - "assert_contract_editable_for_update" Cohesion: 0.60 Nodes (3): assert_contract_editable_for_update(), test_assert_allows_editable(), test_assert_rejects_non_editable() -### Community 95 - "Community 95" -Cohesion: 0.35 -Nodes (11): create_tenant(), get_tenant(), list_tenants(), Any, Session, _row_to_dict(), soft_delete_tenant(), tenant_no_exists() (+3 more) +### Community 95 - "test_pl_public_link_archived.py" +Cohesion: 0.47 +Nodes (5): list_ethnics(), Any, Session, 民族码表 CRUD(全局 sys_ethnic), _row_to_dict() -### Community 96 - "__init__.py" -Cohesion: 0.39 -Nodes (10): create_site(), get_site(), list_sites(), Any, Session, _row_to_dict(), site_code_exists(), soft_delete_site() (+2 more) +### Community 96 - "opportunity_follow.py" +Cohesion: 0.16 +Nodes (18): _build_quote_filters(), _fill_contract_linked_count(), list_quotes(), _parse_optional_datetime(), _period_key(), Any, datetime, Query (+10 more) ### Community 97 - "_ensure_subpack_slip_no" Cohesion: 0.21 Nodes (22): clear_target_products(), count_target_rows(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+14 more) ### Community 99 - "QiniuStorage" -Cohesion: 0.50 -Nodes (4): customer_options(), 客户下拉选项(租户内只读,不做 owner 数据权限), CustomerOptionsBody, 客户下拉选项请求体(租户内只读搜索,不做 owner 数据权限) +Cohesion: 0.67 +Nodes (3): parse_optional_plan_datetime(), datetime, 运输计划相关日期时间解析:前端 date-picker 仅传 YYYY-MM-DD。 ### Community 100 - "price_letter_detail" -Cohesion: 0.24 -Nodes (16): Settings, BaseSettings, BackfillRule, apply_renumber(), build_mapping(), fetch_products(), format_new_product_no(), load_settings_env() (+8 more) +Cohesion: 0.27 +Nodes (15): Settings, BaseSettings, apply_renumber(), build_mapping(), fetch_products(), format_new_product_no(), load_settings_env(), main() (+7 more) -### Community 101 - "list_product_options" -Cohesion: 0.67 -Nodes (3): list_product_options(), 产品下拉 options:keyword 按产品名称/拼音首字母模糊匹配,不匹配产品编号。, test_list_product_options_keyword_only_filters_product_name() +### Community 101 - "tenant.py" +Cohesion: 0.35 +Nodes (11): create_tenant(), get_tenant(), list_tenants(), Any, Session, _row_to_dict(), soft_delete_tenant(), tenant_no_exists() (+3 more) -### Community 102 - "dept.py" -Cohesion: 0.67 -Nodes (3): attachment_download_url(), AttachmentDownloadUrlBody, 返回带 Content-Disposition 的下载 URL,保证浏览器使用原始文件名。 +### Community 102 - "crm_supplier_hazard.py" +Cohesion: 0.60 +Nodes (5): product_allowed(), test_dual_requires_both(), test_explosive_only_requires_allow_explosive(), test_plain_always_allowed(), test_toxic_only_requires_allow_toxic() ### Community 103 - "pl_internal_customer.py" -Cohesion: 0.35 -Nodes (8): is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免), compute_contract_gap_sides(), side_is_exempt(), test_both_external_no_contracts_gaps_both(), test_both_internal_no_gap(), test_external_with_contracts_no_gap(), test_internal_supplier_external_demander_missing_only_demander() +Cohesion: 0.07 +Nodes (86): archive_plan(), create_plan(), get_plan(), update_plan(), update_plan_driver_feedback(), update_plan_site_feedback(), PlPlan, PlPlanProduct (+78 more) ### Community 104 - "apply_crm_create_by_scope" -Cohesion: 0.25 -Nodes (17): create_price_letter(), get_price_letter(), list_price_letters(), _parse_date(), Any, date, Session, _row_to_dict() (+9 more) +Cohesion: 0.29 +Nodes (15): create_price_letter(), get_price_letter(), list_price_letters(), _parse_date(), Any, date, Session, _row_to_dict() (+7 more) -### Community 105 - "list_customers" -Cohesion: 0.15 -Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n, 发送催单通知给配送员 Args: deliver_openid: 配送员openid, 发送模板消息 Args: openid: 用户openid template_ (+1 more) +### Community 105 - "pool_customer_assign" +Cohesion: 0.17 +Nodes (11): pool_customer_assign(), pool_customer_claim(), pool_customer_list(), pool_record_detail(), pool_record_list(), PoolAssignBody, PoolClaimBody, PoolCustomerListBody (+3 more) + +### Community 106 - "site.py" +Cohesion: 0.39 +Nodes (10): create_site(), get_site(), list_sites(), Any, Session, _row_to_dict(), site_code_exists(), soft_delete_site() (+2 more) ### Community 107 - "apply_pl_scope" -Cohesion: 0.14 -Nodes (38): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, StartInstanceBody, create_instance(), create_process_def(), create_task(), get_all_tasks_for_business() (+30 more) +Cohesion: 0.10 +Nodes (43): create_instance(), create_process_def(), create_task(), get_all_tasks_for_business(), get_instance(), get_latest_version(), get_nodes_by_version(), get_pending_tasks_by_node() (+35 more) + +### Community 108 - "statistics.py" +Cohesion: 0.45 +Nodes (11): _customer_base_query(), get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics(), get_source_statistics(), get_trend_statistics() (+3 more) ### Community 109 - "Community 109" -Cohesion: 0.12 -Nodes (27): bind_vehicle_driver(), create_vehicle(), get_vehicle(), update_vehicle(), _vehicle_to_detail(), calc_age_from_chinese_id_card(), date, 从 18 位身份证号计算周岁。号码不完整或出生日期无效时返回 None。 (+19 more) +Cohesion: 0.24 +Nodes (11): extract_minio_object_key(), join_relative_urls(), normalize_oss_storage_url(), MinIO 附件 URL 规范化(数据迁移共用)。 背景 ---- CRM / 地磅 / 报销与 shanxia2.0 共用同一 MinIO(bucket 默, 业务表 OSS ID 串 → 相对 URL 串(用于客户证照、跟进附件等)。, 去掉预签名 query(``?X-Amz-...``)。, 将绝对/相对 URL 规范为 MinIO object key(不含 bucket)。, 迁移 CRM ``sys_oss`` 行:``url`` + ``file_name`` → 门户相对路径。 (+3 more) -### Community 110 - "Base" -Cohesion: 0.22 -Nodes (10): Config, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), Any, 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。, Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。 (+2 more) +### Community 110 - "plan_has_incomplete_hazard_cert_exists" +Cohesion: 0.50 +Nodes (4): ApiRequestLogCRUD, Session, SysApiRequestLog, SysApiRequestLogHis ### Community 111 - "Community 111" -Cohesion: 0.21 -Nodes (18): _assert_editable(), _build_public_page(), _format_file_size(), _get_inventory_by_token(), get_public_inventory(), _parse_feedback_images(), Session, UploadFile (+10 more) +Cohesion: 0.28 +Nodes (14): _assert_editable(), _build_public_page(), _format_file_size(), _get_inventory_by_token(), get_public_inventory(), _parse_feedback_images(), Session, UploadFile (+6 more) + +### Community 112 - ".to_tenant_user_dict" +Cohesion: 0.40 +Nodes (3): Any, 供 get_tenant_no 等门户工具使用。, 与门户 JWT / apply_data_scope 所需的 user_info 字段对齐。 ### Community 113 - "quote_share_log.py" -Cohesion: 0.26 -Nodes (12): list_share_logs(), _parse_user_agent(), Any, Session, CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, Java: statisticsVisits, 简易 User-Agent 解析(替代 Hutool UserAgentUtil), Java: queryLogsByQuoteId (+4 more) +Cohesion: 0.67 +Nodes (3): Web 管理端约定角色(由 sys_role.role_name 映射而来,非数据库枚举), UserRole, str ### Community 114 - "db_models.py" -Cohesion: 0.16 -Nodes (17): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no(), DbSequence, 地磅(db)模块数据模型 — 对齐 docs/sql/db_tables.sql, _allocate_inbound_outbound_id() (+9 more) +Cohesion: 0.24 +Nodes (12): DbSequence, 地磅(db)模块数据模型 — 对齐 docs/sql/db_tables.sql, _allocate_inbound_outbound_id(), _ensure_sequence_row(), max_numeric_inbound_outbound_id(), next_inbound_outbound_id(), Session, 出入库单 id 生成 — 租户内纯数字自增,并发安全。 (+4 more) ### Community 115 - "site.py" -Cohesion: 0.12 -Nodes (20): create_driver(), get_driver(), list_drivers(), _personnel_to_driver_read(), update_driver(), DriverBase, DriverCreate, DriverListResponse (+12 more) +Cohesion: 0.05 +Nodes (114): approve_carrier(), bind_vehicle_driver(), create_carrier(), create_driver(), create_personnel(), create_vehicle(), delete_carrier(), delete_driver() (+106 more) ### Community 116 - "Community 116" Cohesion: 0.17 Nodes (28): batch_insert_quote_products(), calculate_subtotal(), _decimal_value(), delete_products_by_quote_id(), _ensure_quote_parent_scope(), _get_field(), get_quote_product(), insert_quote_product() (+20 more) +### Community 117 - "get_web_auth_menu_codes" +Cohesion: 0.23 +Nodes (12): change_current_user_password(), get_current_user_profile(), public_quote_share(), Request, Session, 获取当前用户信息(与 sys_user 字段对应)。, 公开分享查看报价单 — Java: GET /share/{shareCode}(无 JWT), get_current_user() (+4 more) + ### Community 118 - "Community 118" -Cohesion: 0.20 -Nodes (24): batch_insert_contract_products(), calculate_subtotal(), _decimal_value(), delete_price_tiers_by_contract_id(), delete_products_by_contract_id(), _get_field(), insert_contract_product(), _letter_oss_ids_to_json() (+16 more) +Cohesion: 0.15 +Nodes (29): batch_insert_contract_products(), calculate_subtotal(), _decimal_value(), delete_price_tiers_by_contract_id(), delete_products_by_contract_id(), _get_field(), insert_contract_product(), _letter_oss_ids_to_json() (+21 more) ### Community 119 - "Community 119" -Cohesion: 0.16 -Nodes (29): CertRow, VehiclePersonnelRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), match_required_cert_name(), _missing_field_labels() (+21 more) +Cohesion: 0.12 +Nodes (37): CertRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), is_huolala_trailer_no(), match_required_cert_name(), _missing_field_labels() (+29 more) + +### Community 120 - "sqlalchemy_exception_handler" +Cohesion: 0.11 +Nodes (18): ApiCryptoMiddleware, ApiRequestLogMiddleware, _db_pool_keepalive_loop(), _error_json(), lifespan(), Exception, Request, 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误 (+10 more) + +### Community 121 - "Session" +Cohesion: 0.11 +Nodes (25): API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), Session (+17 more) ### Community 122 - "Community 122" Cohesion: 0.39 Nodes (10): create_post(), get_post(), list_posts(), post_code_exists(), Any, Session, _row_to_dict(), soft_delete_post() (+2 more) -### Community 125 - "Community 125" -Cohesion: 0.13 -Nodes (17): camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session, _cert_url_blank(), plan_has_hazard_product_exists() (+9 more) - ### Community 126 - "customer_pool.py" Cohesion: 0.36 Nodes (13): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), menu_name_exists(), Any (+5 more) @@ -704,16 +720,16 @@ Cohesion: 0.22 Nodes (15): get_storage(), download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url(), normalize_storage_path(), 报销附件存储适配 — 复用门户 app.core.storage,对外保持 bx 协议。 (+7 more) ### Community 141 - "PlTransport" -Cohesion: 0.18 -Nodes (25): approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), get_business_all_tasks(), _get_business_form_fields() (+17 more) +Cohesion: 0.15 +Nodes (33): approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), get_business_all_tasks(), _get_business_form_fields() (+25 more) ### Community 144 - "dict_data.py" -Cohesion: 0.26 -Nodes (13): UserCreateBody, create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options(), Any, Session, 字典数据 CRUD(sys_dict_data) (+5 more) +Cohesion: 0.27 +Nodes (11): create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options(), Any, Session, 字典数据 CRUD(sys_dict_data), 字典下拉选项:租户主数据,忽略数据范围(user_info 保留兼容调用方,不参与过滤)。 (+3 more) ### Community 145 - "resolve_crm_product" -Cohesion: 0.08 -Nodes (54): _generate_notify_message(), _is_rearrange(), 仅计划已正式安排才算「调整运输」。 创建/编辑表单预选车辆会留下 draft 运输单,计划仍为 pending; 若把非 cancelled, PlPlan, PlTransport, DibangInventoryLinkResult, _plan_type_to_business_type(), _product_quantity() (+46 more) +Cohesion: 0.05 +Nodes (78): _build_page(), _get_by_token(), _make_handlers(), _models(), Session, 运输计划 · 入库/出库单现场免登录公共 API, SoftDeleteModel, BizAttachment (+70 more) ### Community 147 - "Community 147" Cohesion: 0.37 @@ -724,48 +740,32 @@ Cohesion: 0.19 Nodes (7): _guess_preview_content_type(), MinIOStorage, Any, 从 MINIO_BASE_URL 解析公网 endpoint;未配置或与内网相同时复用 self.client。, 按对象键后缀推断内联预览 Content-Type(纠正上传时未写入 MIME 的情况)。, MinIO 预签名下载 URL,携带原始文件名。, MinIO 预签名内联预览 URL(图片新标签页 / PDF iframe 等)。 上传时 put_object 未写 content_typ ### Community 159 - "customer_update" -Cohesion: 0.18 -Nodes (17): get_web_auth_menu_codes(), 获取当前用户菜单权限标识(sys_menu.perms,经角色继承)。, get_user_menu_codes(), Session, 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user(), iter_user_menu_perm_codes() (+9 more) - -### Community 160 - "register_local_callback" -Cohesion: 0.17 -Nodes (9): API 路由包 — 山峡化工生产一体化门户, get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单), Config, format_api_error_message(), PageResult, Exception, 将 HTTP/SQLAlchemy 等异常转为可展示的错误文案(避免 str([]) 空列表)。 (+1 more) +Cohesion: 0.15 +Nodes (20): get_web_auth_menu_codes(), 获取当前用户菜单权限标识(sys_menu.perms,经角色继承)。, get_user_menu_codes(), Session, 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user() (+12 more) ### Community 162 - ".to_tenant_user_dict" Cohesion: 0.42 Nodes (7): default_settlement_clause(), test_advance_payment_clause(), test_arrive_payment_clause(), test_empty_falls_back_to_arrive(), test_monthly_settlement_clause_uses_label(), test_unknown_falls_back_to_arrive(), test_volume_quarterly_other_labels() ### Community 164 - "get_client_ip" -Cohesion: 0.15 -Nodes (29): _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。无 Token 或已失效时仍返回成功(幂等)。, Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录:账号为 sys_user.user_no,密码为 sys_user.password(bcrypt)。, refresh_token(), web_login() (+21 more) +Cohesion: 0.12 +Nodes (34): _avatar_url_field(), _build_user_info_payload(), _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。无 Token 或已失效时仍返回成功(幂等)。, 与 web-admin 静态路由 meta.roles(admin/super_admin)对齐的单元素数组。, 与 web-admin `userInfo` 字段约定一致。 (+26 more) ### Community 170 - "test_quote_approver_setting.py" Cohesion: 0.22 Nodes (3): BaseStorage, 带下载文件名的访问 URL;默认实现为普通访问地址。, 浏览器内联预览 URL;默认实现为普通访问地址。 -### Community 171 - "minio_url.py" -Cohesion: 0.07 -Nodes (48): pool_record_list(), pool_rule_add(), pool_rule_delete(), pool_rule_detail(), pool_rule_execute(), pool_rule_list(), pool_rule_update(), pool_rule_update_status() (+40 more) - ### Community 173 - "resolve_create_time_bounds" -Cohesion: 0.07 -Nodes (71): _build_driver_url(), get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible(), _build_arrange_result() (+63 more) - -### Community 174 - "register_local_callback" -Cohesion: 0.07 -Nodes (57): 返回 (作废, 归档)。现场链接实际走入库/出库单公共页。, _resolve_io_order_link_flags(), _build_public_page(), _build_site_product_read(), _format_file_size(), get_public_site(), _get_site_link_by_token(), _parse_feedback_images() (+49 more) +Cohesion: 0.08 +Nodes (77): get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible(), _build_arrange_result(), _build_driver_url() (+69 more) ### Community 179 - "test_pl_vehicle_personnel_photo_schema.py" Cohesion: 0.27 Nodes (16): add_favorite(), count_active(), find_active(), find_soft_deleted(), list_favorites(), _next_order_num(), normalize_menu_path(), Any (+8 more) -### Community 182 - "statistics.py" -Cohesion: 0.45 -Nodes (11): _customer_base_query(), get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics(), get_source_statistics(), get_trend_statistics() (+3 more) - ### Community 188 - "get_client_ip" -Cohesion: 0.23 -Nodes (13): get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生, run_auto_generate_monthly_plans(), default_execution_status() (+5 more) +Cohesion: 0.24 +Nodes (12): get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生, run_auto_generate_monthly_plans(), default_execution_status() (+4 more) ### Community 206 - "crm_quote_pdf.py" Cohesion: 0.36 @@ -776,8 +776,8 @@ Cohesion: 0.18 Nodes (10): 1. 创建虚拟环境, 2. 安装依赖, 3. 配置环境变量, 4. 启动服务, API 路由分组, shanxia2.0 后端骨架(FastAPI), 开发规范, 快速开始 (+2 more) ### Community 220 - "api_crypto_middleware.py" -Cohesion: 0.21 -Nodes (15): ApiCryptoMiddleware, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key() (+7 more) +Cohesion: 0.24 +Nodes (13): _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key(), Redis (+5 more) ### Community 237 - "order_status_compat.py" Cohesion: 0.36 @@ -799,17 +799,17 @@ Nodes (6): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时 ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `generate_uuid()` connect `Community 109` to `Community 0`, `Community 4`, `Community 5`, `Community 6`, `Community 134`, `Community 8`, `statistics.py`, `Community 136`, `Community 11`, `Community 14`, `Community 15`, `dict_data.py`, `Community 17`, `resolve_crm_product`, `Community 16`, `Community 21`, `Community 24`, `Community 25`, `Community 28`, `Community 29`, `Community 32`, `get_client_ip`, `Community 36`, `Community 39`, `Community 40`, `Community 41`, `minio_url.py`, `resolve_create_time_bounds`, `Community 47`, `Community 50`, `Community 56`, `Community 57`, `Community 58`, `get_client_ip`, `Community 61`, `Community 62`, `Community 64`, `Community 65`, `Community 66`, `Community 67`, `Community 68`, `Community 71`, `Community 72`, `Community 83`, `allocate_next_biz_no`, `Community 86`, `Community 87`, `CrmProduct`, `pl_ocr_service.py`, `pl_vehicle_recharge_service.py`, `Community 92`, `Community 95`, `__init__.py`, `apply_crm_create_by_scope`, `apply_pl_scope`, `quote_share_log.py`, `db_models.py`, `site.py`, `Community 116`, `Community 118`, `Community 122`, `customer_pool.py`?** - _High betweenness centrality (0.111) - this node is a cross-community bridge._ -- **Why does `Settings` connect `price_letter_detail` to `_ensure_subpack_slip_no`, `Community 35`, `Community 67`, `Community 37`, `Community 73`, `Community 42`, `Base`, `Community 46`, `Community 59`, `Community 30`?** +- **Why does `generate_uuid()` connect `Community 15` to `Community 0`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `statistics.py`, `Community 136`, `Community 134`, `Community 10`, `Community 11`, `Community 14`, `dict_data.py`, `resolve_crm_product`, `Community 16`, `Community 20`, `Community 21`, `Community 24`, `Community 25`, `Community 26`, `Community 28`, `Community 29`, `Community 32`, `Community 34`, `get_client_ip`, `Community 36`, `Community 39`, `Community 40`, `Community 41`, `Community 43`, `Community 44`, `resolve_create_time_bounds`, `Community 47`, `Community 51`, `Community 55`, `Community 57`, `Community 60`, `get_client_ip`, `Community 61`, `Community 64`, `Community 65`, `Community 67`, `Community 68`, `Community 72`, `resolve_crm_product`, `Community 83`, `allocate_next_biz_no`, `Community 87`, `pl_ocr_service.py`, `Community 92`, `tenant.py`, `pl_internal_customer.py`, `apply_crm_create_by_scope`, `site.py`, `apply_pl_scope`, `db_models.py`, `site.py`, `Community 116`, `Community 118`, `Community 122`, `customer_pool.py`?** + _High betweenness centrality (0.109) - this node is a cross-community bridge._ +- **Why does `BaseModel` connect `Community 12` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 5`, `Community 7`, `Community 11`, `PlTransport`, `Community 14`, `Community 13`, `Community 15`, `resolve_crm_product`, `Community 18`, `Community 19`, `Community 20`, `Community 16`, `Community 24`, `Community 27`, `Community 31`, `Community 40`, `Community 43`, `resolve_create_time_bounds`, `Community 45`, `Community 47`, `Community 51`, `Community 53`, `Community 54`, `Community 60`, `Community 63`, `Community 64`, `Community 65`, `Community 66`, `Community 71`, `PlCarrier`, `customer_follow.py`, `pl_internal_customer.py`, `pool_customer_assign`, `Community 111`, `site.py`, `Community 119`, `Session`?** + _High betweenness centrality (0.096) - this node is a cross-community bridge._ +- **Why does `Settings` connect `price_letter_detail` to `_ensure_subpack_slip_no`, `Community 35`, `Community 67`, `Community 37`, `Community 38`, `Community 73`, `Community 42`, `Community 46`, `Community 56`, `Community 58`, `Community 59`, `Community 30`?** _High betweenness centrality (0.093) - this node is a cross-community bridge._ -- **Why does `BaseModel` connect `Community 0` to `Community 1`, `Community 2`, `Community 5`, `Community 6`, `Community 7`, `Community 10`, `Community 11`, `Community 12`, `PlTransport`, `Community 13`, `Community 15`, `dict_data.py`, `Community 17`, `Community 18`, `Community 19`, `Community 14`, `Community 16`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 31`, `register_local_callback`, `Community 33`, `Community 40`, `Community 43`, `Community 44`, `resolve_create_time_bounds`, `minio_url.py`, `Community 47`, `Community 45`, `register_local_callback`, `Community 51`, `Community 52`, `Community 53`, `Community 54`, `Community 58`, `Community 60`, `Community 62`, `Community 63`, `Community 64`, `Community 65`, `Community 66`, `Community 71`, `customer_follow.py`, `QiniuStorage`, `dept.py`, `apply_pl_scope`, `Community 111`, `site.py`, `Community 119`?** - _High betweenness centrality (0.091) - this node is a cross-community bridge._ - **Are the 8 inferred relationships involving `DbUserContext` (e.g. with `InventoryRelatedData` and `AutoGenerateMonthlyResult`) actually correct?** _`DbUserContext` has 8 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 247 inferred relationships involving `ValueError` (e.g. with `.presigned_download_url()` and `.presigned_preview_url()`) actually correct?** - _`ValueError` has 247 INFERRED edges - model-reasoned connections that need verification._ - **What connects `API 路由包 — 山峡化工生产一体化门户`, `返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。`, `返回用户下拉选项(label=昵称,value=用户ID,附带 nickName/userNo)。 供申请人/审批人等选择场景使用,返回本租户全部有效` to the rest of the system?** - _568 weakly-connected nodes found - possible documentation gaps or missing edges._ + _572 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `Community 0` be split into smaller, more focused modules?** - _Cohesion score 0.055633473585787754 - nodes in this community are weakly interconnected._ \ No newline at end of file + _Cohesion score 0.11313131313131314 - nodes in this community are weakly interconnected._ +- **Should `Community 1` be split into smaller, more focused modules?** + _Cohesion score 0.07804878048780488 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/backend/graphify-out/2026-08-20/graph.json b/backend/graphify-out/2026-08-20/graph.json index 9835c0c20..438d8a952 100644 --- a/backend/graphify-out/2026-08-20/graph.json +++ b/backend/graphify-out/2026-08-20/graph.json @@ -20,7 +20,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_init", - "community": 160, + "community": 121, "norm_label": "__init__.py" }, { @@ -30,7 +30,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_init_rationale_1", - "community": 160, + "community": 121, "norm_label": "api \u8def\u7531\u5305 \u2014 \u5c71\u5ce1\u5316\u5de5\u751f\u4ea7\u4e00\u4f53\u5316\u95e8\u6237" }, { @@ -50,7 +50,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_api_admin_list_roles_for_select", - "community": 93, + "community": 3, "norm_label": "list_roles_for_select()" }, { @@ -90,7 +90,7 @@ "source_location": "L126", "_origin": "ast", "id": "app_api_admin_tenantcreatebody", - "community": 44, + "community": 53, "norm_label": "tenantcreatebody" }, { @@ -100,7 +100,7 @@ "source_location": "L137", "_origin": "ast", "id": "app_api_admin_tenantupdatebody", - "community": 44, + "community": 53, "norm_label": "tenantupdatebody" }, { @@ -120,7 +120,7 @@ "source_location": "L170", "_origin": "ast", "id": "app_api_admin_create_tenant", - "community": 44, + "community": 3, "norm_label": "create_tenant()" }, { @@ -160,7 +160,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_api_admin_usercreatebody", - "community": 144, + "community": 53, "norm_label": "usercreatebody" }, { @@ -170,7 +170,7 @@ "source_location": "L264", "_origin": "ast", "id": "app_api_admin_userupdatebody", - "community": 44, + "community": 53, "norm_label": "userupdatebody" }, { @@ -187,7 +187,7 @@ "label": "get_user_by_id()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L324", + "source_location": "L338", "_origin": "ast", "id": "app_api_admin_get_user_by_id", "community": 3, @@ -197,7 +197,7 @@ "label": "create_user()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L344", + "source_location": "L358", "_origin": "ast", "id": "app_api_admin_create_user", "community": 3, @@ -207,7 +207,7 @@ "label": "update_user()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L377", + "source_location": "L391", "_origin": "ast", "id": "app_api_admin_update_user", "community": 3, @@ -217,7 +217,7 @@ "label": "delete_user()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L407", + "source_location": "L421", "_origin": "ast", "id": "app_api_admin_delete_user", "community": 3, @@ -227,7 +227,7 @@ "label": "reset_user_password()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L420", + "source_location": "L434", "_origin": "ast", "id": "app_api_admin_reset_user_password", "community": 3, @@ -237,27 +237,27 @@ "label": "DictTypeCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L437", + "source_location": "L451", "_origin": "ast", "id": "app_api_admin_dicttypecreatebody", - "community": 44, + "community": 53, "norm_label": "dicttypecreatebody" }, { "label": "DictTypeUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L446", + "source_location": "L460", "_origin": "ast", "id": "app_api_admin_dicttypeupdatebody", - "community": 44, + "community": 53, "norm_label": "dicttypeupdatebody" }, { "label": "list_dict_types()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L456", + "source_location": "L470", "_origin": "ast", "id": "app_api_admin_list_dict_types", "community": 3, @@ -267,7 +267,7 @@ "label": "create_dict_type()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L472", + "source_location": "L486", "_origin": "ast", "id": "app_api_admin_create_dict_type", "community": 3, @@ -277,7 +277,7 @@ "label": "update_dict_type()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L494", + "source_location": "L508", "_origin": "ast", "id": "app_api_admin_update_dict_type", "community": 3, @@ -287,7 +287,7 @@ "label": "delete_dict_type()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L519", + "source_location": "L533", "_origin": "ast", "id": "app_api_admin_delete_dict_type", "community": 3, @@ -297,27 +297,27 @@ "label": "DictDataCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L536", + "source_location": "L550", "_origin": "ast", "id": "app_api_admin_dictdatacreatebody", - "community": 44, + "community": 53, "norm_label": "dictdatacreatebody" }, { "label": "DictDataUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L547", + "source_location": "L561", "_origin": "ast", "id": "app_api_admin_dictdataupdatebody", - "community": 44, + "community": 53, "norm_label": "dictdataupdatebody" }, { "label": "list_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L558", + "source_location": "L572", "_origin": "ast", "id": "app_api_admin_list_dict_data", "community": 3, @@ -327,7 +327,7 @@ "label": "create_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L575", + "source_location": "L589", "_origin": "ast", "id": "app_api_admin_create_dict_data", "community": 3, @@ -337,7 +337,7 @@ "label": "update_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L599", + "source_location": "L613", "_origin": "ast", "id": "app_api_admin_update_dict_data", "community": 3, @@ -347,7 +347,7 @@ "label": "delete_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L623", + "source_location": "L637", "_origin": "ast", "id": "app_api_admin_delete_dict_data", "community": 3, @@ -357,7 +357,7 @@ "label": "dict_data_options()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L636", + "source_location": "L650", "_origin": "ast", "id": "app_api_admin_dict_data_options", "community": 3, @@ -367,7 +367,7 @@ "label": "dict_data_all()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L650", + "source_location": "L664", "_origin": "ast", "id": "app_api_admin_dict_data_all", "community": 3, @@ -377,27 +377,27 @@ "label": "DeptCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L677", + "source_location": "L691", "_origin": "ast", "id": "app_api_admin_deptcreatebody", - "community": 44, + "community": 53, "norm_label": "deptcreatebody" }, { "label": "DeptUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L690", + "source_location": "L704", "_origin": "ast", "id": "app_api_admin_deptupdatebody", - "community": 44, + "community": 53, "norm_label": "deptupdatebody" }, { "label": "list_depts()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L703", + "source_location": "L717", "_origin": "ast", "id": "app_api_admin_list_depts", "community": 3, @@ -407,7 +407,7 @@ "label": "create_dept()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L714", + "source_location": "L728", "_origin": "ast", "id": "app_api_admin_create_dept", "community": 3, @@ -417,17 +417,17 @@ "label": "update_dept()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L740", + "source_location": "L754", "_origin": "ast", "id": "app_api_admin_update_dept", - "community": 44, + "community": 3, "norm_label": "update_dept()" }, { "label": "delete_dept()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L766", + "source_location": "L780", "_origin": "ast", "id": "app_api_admin_delete_dept", "community": 3, @@ -437,27 +437,27 @@ "label": "SiteCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L783", + "source_location": "L797", "_origin": "ast", "id": "app_api_admin_sitecreatebody", - "community": 44, + "community": 53, "norm_label": "sitecreatebody" }, { "label": "SiteUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L798", + "source_location": "L812", "_origin": "ast", "id": "app_api_admin_siteupdatebody", - "community": 44, + "community": 53, "norm_label": "siteupdatebody" }, { "label": "list_sites()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L814", + "source_location": "L828", "_origin": "ast", "id": "app_api_admin_list_sites", "community": 3, @@ -467,7 +467,7 @@ "label": "create_site()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L828", + "source_location": "L842", "_origin": "ast", "id": "app_api_admin_create_site", "community": 3, @@ -477,7 +477,7 @@ "label": "update_site()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L856", + "source_location": "L870", "_origin": "ast", "id": "app_api_admin_update_site", "community": 3, @@ -487,7 +487,7 @@ "label": "delete_site()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L885", + "source_location": "L899", "_origin": "ast", "id": "app_api_admin_delete_site", "community": 3, @@ -497,27 +497,27 @@ "label": "PostCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L902", + "source_location": "L916", "_origin": "ast", "id": "app_api_admin_postcreatebody", - "community": 44, + "community": 53, "norm_label": "postcreatebody" }, { "label": "PostUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L912", + "source_location": "L926", "_origin": "ast", "id": "app_api_admin_postupdatebody", - "community": 44, + "community": 53, "norm_label": "postupdatebody" }, { "label": "list_posts()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L923", + "source_location": "L937", "_origin": "ast", "id": "app_api_admin_list_posts", "community": 3, @@ -527,7 +527,7 @@ "label": "create_post()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L937", + "source_location": "L951", "_origin": "ast", "id": "app_api_admin_create_post", "community": 3, @@ -537,17 +537,17 @@ "label": "update_post()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L960", + "source_location": "L974", "_origin": "ast", "id": "app_api_admin_update_post", - "community": 44, + "community": 3, "norm_label": "update_post()" }, { "label": "delete_post()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L984", + "source_location": "L998", "_origin": "ast", "id": "app_api_admin_delete_post", "community": 3, @@ -557,17 +557,17 @@ "label": "PostUsersUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L996", + "source_location": "L1010", "_origin": "ast", "id": "app_api_admin_postusersupdatebody", - "community": 44, + "community": 53, "norm_label": "postusersupdatebody" }, { "label": "list_post_bound_users()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1003", + "source_location": "L1017", "_origin": "ast", "id": "app_api_admin_list_post_bound_users", "community": 3, @@ -577,7 +577,7 @@ "label": "update_post_bound_users()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1017", + "source_location": "L1031", "_origin": "ast", "id": "app_api_admin_update_post_bound_users", "community": 3, @@ -587,27 +587,27 @@ "label": "MenuCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1041", + "source_location": "L1055", "_origin": "ast", "id": "app_api_admin_menucreatebody", - "community": 44, + "community": 53, "norm_label": "menucreatebody" }, { "label": "MenuUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1057", + "source_location": "L1071", "_origin": "ast", "id": "app_api_admin_menuupdatebody", - "community": 44, + "community": 53, "norm_label": "menuupdatebody" }, { "label": "list_menus()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1074", + "source_location": "L1088", "_origin": "ast", "id": "app_api_admin_list_menus", "community": 3, @@ -617,7 +617,7 @@ "label": "create_menu()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1085", + "source_location": "L1099", "_origin": "ast", "id": "app_api_admin_create_menu", "community": 3, @@ -627,7 +627,7 @@ "label": "update_menu()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1114", + "source_location": "L1128", "_origin": "ast", "id": "app_api_admin_update_menu", "community": 3, @@ -637,7 +637,7 @@ "label": "delete_menu()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1144", + "source_location": "L1158", "_origin": "ast", "id": "app_api_admin_delete_menu", "community": 3, @@ -647,47 +647,47 @@ "label": "RoleCreateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1161", + "source_location": "L1175", "_origin": "ast", "id": "app_api_admin_rolecreatebody", - "community": 44, + "community": 53, "norm_label": "rolecreatebody" }, { "label": "RoleUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1171", + "source_location": "L1185", "_origin": "ast", "id": "app_api_admin_roleupdatebody", - "community": 44, + "community": 53, "norm_label": "roleupdatebody" }, { "label": "RoleMenuBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1181", + "source_location": "L1195", "_origin": "ast", "id": "app_api_admin_rolemenubody", - "community": 44, + "community": 53, "norm_label": "rolemenubody" }, { "label": "RoleDataScopeBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1185", + "source_location": "L1199", "_origin": "ast", "id": "app_api_admin_roledatascopebody", - "community": 44, + "community": 53, "norm_label": "roledatascopebody" }, { "label": "list_role_management()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1193", + "source_location": "L1207", "_origin": "ast", "id": "app_api_admin_list_role_management", "community": 3, @@ -697,27 +697,37 @@ "label": "create_role_management()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1207", + "source_location": "L1221", "_origin": "ast", "id": "app_api_admin_create_role_management", "community": 3, "norm_label": "create_role_management()" }, + { + "label": "get_role_management()", + "file_type": "code", + "source_file": "app/api/admin.py", + "source_location": "L1244", + "_origin": "ast", + "id": "app_api_admin_get_role_management", + "community": 3, + "norm_label": "get_role_management()" + }, { "label": "update_role_management()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1230", + "source_location": "L1261", "_origin": "ast", "id": "app_api_admin_update_role_management", - "community": 44, + "community": 3, "norm_label": "update_role_management()" }, { "label": "delete_role_management()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1254", + "source_location": "L1285", "_origin": "ast", "id": "app_api_admin_delete_role_management", "community": 3, @@ -727,7 +737,7 @@ "label": "get_role_menus()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1267", + "source_location": "L1298", "_origin": "ast", "id": "app_api_admin_get_role_menus", "community": 3, @@ -737,7 +747,7 @@ "label": "update_role_menus()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1277", + "source_location": "L1308", "_origin": "ast", "id": "app_api_admin_update_role_menus", "community": 3, @@ -747,7 +757,7 @@ "label": "get_role_data_scope()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1292", + "source_location": "L1323", "_origin": "ast", "id": "app_api_admin_get_role_data_scope", "community": 3, @@ -757,7 +767,7 @@ "label": "update_role_data_scope()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1305", + "source_location": "L1336", "_origin": "ast", "id": "app_api_admin_update_role_data_scope", "community": 3, @@ -767,7 +777,7 @@ "label": "_format_file_size()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1331", + "source_location": "L1362", "_origin": "ast", "id": "app_api_admin_format_file_size", "community": 3, @@ -777,7 +787,7 @@ "label": "upload_attachment()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1341", + "source_location": "L1372", "_origin": "ast", "id": "app_api_admin_upload_attachment", "community": 3, @@ -797,27 +807,27 @@ "label": "AttachmentDownloadUrlBody", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1391", + "source_location": "L1422", "_origin": "ast", "id": "app_api_admin_attachmentdownloadurlbody", - "community": 102, + "community": 53, "norm_label": "attachmentdownloadurlbody" }, { "label": "attachment_download_url()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1398", + "source_location": "L1429", "_origin": "ast", "id": "app_api_admin_attachment_download_url", - "community": 102, + "community": 3, "norm_label": "attachment_download_url()" }, { "label": "attachment_preview_url()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1424", + "source_location": "L1455", "_origin": "ast", "id": "app_api_admin_attachment_preview_url", "community": 3, @@ -827,7 +837,7 @@ "label": "list_menu_favorites()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1448", + "source_location": "L1479", "_origin": "ast", "id": "app_api_admin_list_menu_favorites", "community": 3, @@ -837,7 +847,7 @@ "label": "create_menu_favorite()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1462", + "source_location": "L1493", "_origin": "ast", "id": "app_api_admin_create_menu_favorite", "community": 3, @@ -847,7 +857,7 @@ "label": "reorder_menu_favorites()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1487", + "source_location": "L1518", "_origin": "ast", "id": "app_api_admin_reorder_menu_favorites", "community": 3, @@ -857,7 +867,7 @@ "label": "delete_menu_favorite()", "file_type": "code", "source_file": "app/api/admin.py", - "source_location": "L1508", + "source_location": "L1539", "_origin": "ast", "id": "app_api_admin_delete_menu_favorite", "community": 3, @@ -870,7 +880,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_api_admin_rationale_51", - "community": 93, + "community": 3, "norm_label": "\u8fd4\u56de\u8fd0\u8425\u7aef\u89d2\u8272\u4e0b\u62c9\u9009\u9879(label=\u5e93\u4e2d\u89d2\u8272\u540d,value=web \u89d2\u8272\u7801)\u3002" }, { @@ -897,19 +907,19 @@ "label": "\u8fd4\u56de\u5e26 Content-Disposition \u7684\u4e0b\u8f7d URL\uff0c\u4fdd\u8bc1\u6d4f\u89c8\u5668\u4f7f\u7528\u539f\u59cb\u6587\u4ef6\u540d\u3002", "file_type": "rationale", "source_file": "app/api/admin.py", - "source_location": "L1403", + "source_location": "L1434", "_origin": "ast", - "id": "app_api_admin_rationale_1403", - "community": 102, + "id": "app_api_admin_rationale_1434", + "community": 3, "norm_label": "\u8fd4\u56de\u5e26 content-disposition \u7684\u4e0b\u8f7d url,\u4fdd\u8bc1\u6d4f\u89c8\u5668\u4f7f\u7528\u539f\u59cb\u6587\u4ef6\u540d\u3002" }, { "label": "\u8fd4\u56de\u7528\u4e8e\u6d4f\u89c8\u5668\u5185\u8054\u9884\u89c8\u7684 URL\uff08PDF iframe \u7b49\uff09\u3002", "file_type": "rationale", "source_file": "app/api/admin.py", - "source_location": "L1429", + "source_location": "L1460", "_origin": "ast", - "id": "app_api_admin_rationale_1429", + "id": "app_api_admin_rationale_1460", "community": 3, "norm_label": "\u8fd4\u56de\u7528\u4e8e\u6d4f\u89c8\u5668\u5185\u8054\u9884\u89c8\u7684 url(pdf iframe \u7b49)\u3002" }, @@ -1160,7 +1170,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_bx_attachment", - "community": 66, + "community": 14, "norm_label": "attachment.py" }, { @@ -1170,7 +1180,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_api_bx_attachment_tenant", - "community": 66, + "community": 14, "norm_label": "_tenant()" }, { @@ -1180,7 +1190,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_bx_attachment_py_session", - "community": 66, + "community": 14, "norm_label": "session" }, { @@ -1190,7 +1200,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_api_bx_attachment_parse_id_list", - "community": 66, + "community": 14, "norm_label": "_parse_id_list()" }, { @@ -1200,7 +1210,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_api_bx_attachment_upload_file", - "community": 66, + "community": 14, "norm_label": "upload_file()" }, { @@ -1210,7 +1220,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_bx_attachment_py_uploadfile", - "community": 66, + "community": 14, "norm_label": "uploadfile" }, { @@ -1220,7 +1230,7 @@ "source_location": "L67", "_origin": "ast", "id": "app_api_bx_attachment_download_file", - "community": 66, + "community": 14, "norm_label": "download_file()" }, { @@ -1230,7 +1240,7 @@ "source_location": "L89", "_origin": "ast", "id": "app_api_bx_attachment_delete_attachment", - "community": 66, + "community": 14, "norm_label": "delete_attachment()" }, { @@ -1240,7 +1250,7 @@ "source_location": "L103", "_origin": "ast", "id": "app_api_bx_attachment_preview_attachment", - "community": 66, + "community": 14, "norm_label": "preview_attachment()" }, { @@ -1250,7 +1260,7 @@ "source_location": "L127", "_origin": "ast", "id": "app_api_bx_attachment_list_by_biz", - "community": 66, + "community": 14, "norm_label": "list_by_biz()" }, { @@ -1260,7 +1270,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_api_bx_attachment_bind_biz", - "community": 66, + "community": 14, "norm_label": "bind_biz()" }, { @@ -1270,7 +1280,7 @@ "source_location": "L108", "_origin": "ast", "id": "app_api_bx_attachment_rationale_108", - "community": 66, + "community": 14, "norm_label": "\u8fd4\u56de\u56fe\u7247/\u9644\u4ef6\u9884\u89c8 url(minio \u9884\u7b7e\u540d\u6216\u672c\u5730\u516c\u5f00\u5730\u5740,\u5bf9\u9f50\u95e8\u6237 storage \u80fd\u529b)\u3002" }, { @@ -1450,7 +1460,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_bx_payment", - "community": 52, + "community": 18, "norm_label": "payment.py" }, { @@ -1460,7 +1470,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_api_bx_payment_tenant", - "community": 52, + "community": 18, "norm_label": "_tenant()" }, { @@ -1470,7 +1480,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_bx_payment_py_session", - "community": 52, + "community": 18, "norm_label": "session" }, { @@ -1480,7 +1490,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_api_bx_payment_wrap_reimburse_rows", - "community": 52, + "community": 18, "norm_label": "_wrap_reimburse_rows()" }, { @@ -1490,7 +1500,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_api_bx_payment_list_pending_payments", - "community": 52, + "community": 18, "norm_label": "list_pending_payments()" }, { @@ -1500,7 +1510,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_api_bx_payment_payment_finance_stats", - "community": 52, + "community": 18, "norm_label": "payment_finance_stats()" }, { @@ -1510,7 +1520,7 @@ "source_location": "L95", "_origin": "ast", "id": "app_api_bx_payment_list_processed_payments", - "community": 52, + "community": 18, "norm_label": "list_processed_payments()" }, { @@ -1520,7 +1530,7 @@ "source_location": "L132", "_origin": "ast", "id": "app_api_bx_payment_pay", - "community": 52, + "community": 18, "norm_label": "pay()" }, { @@ -1530,7 +1540,7 @@ "source_location": "L152", "_origin": "ast", "id": "app_api_bx_payment_offset", - "community": 52, + "community": 18, "norm_label": "offset()" }, { @@ -1540,7 +1550,7 @@ "source_location": "L175", "_origin": "ast", "id": "app_api_bx_payment_batch_offset", - "community": 52, + "community": 18, "norm_label": "batch_offset()" }, { @@ -1550,7 +1560,7 @@ "source_location": "L198", "_origin": "ast", "id": "app_api_bx_payment_list_advance_issues", - "community": 52, + "community": 18, "norm_label": "list_advance_issues()" }, { @@ -1560,7 +1570,7 @@ "source_location": "L245", "_origin": "ast", "id": "app_api_bx_payment_advance_issue_stats", - "community": 52, + "community": 18, "norm_label": "advance_issue_stats()" }, { @@ -1570,7 +1580,7 @@ "source_location": "L255", "_origin": "ast", "id": "app_api_bx_payment_export_advance_issues", - "community": 52, + "community": 18, "norm_label": "export_advance_issues()" }, { @@ -1580,7 +1590,7 @@ "source_location": "L335", "_origin": "ast", "id": "app_api_bx_payment_issue_advance", - "community": 52, + "community": 18, "norm_label": "issue_advance()" }, { @@ -1590,7 +1600,7 @@ "source_location": "L359", "_origin": "ast", "id": "app_api_bx_payment_list_advance_offset_records", - "community": 52, + "community": 18, "norm_label": "list_advance_offset_records()" }, { @@ -1600,7 +1610,7 @@ "source_location": "L399", "_origin": "ast", "id": "app_api_bx_payment_list_reimburse_offset_records", - "community": 52, + "community": 18, "norm_label": "list_reimburse_offset_records()" }, { @@ -1610,7 +1620,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_bx_reimburse", - "community": 19, + "community": 15, "norm_label": "reimburse.py" }, { @@ -1620,7 +1630,7 @@ "source_location": "L41", "_origin": "ast", "id": "app_api_bx_reimburse_tenant", - "community": 19, + "community": 15, "norm_label": "_tenant()" }, { @@ -1630,7 +1640,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_bx_reimburse_py_session", - "community": 19, + "community": 15, "norm_label": "session" }, { @@ -1640,7 +1650,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_api_bx_reimburse_build_details_data", - "community": 19, + "community": 15, "norm_label": "_build_details_data()" }, { @@ -1650,7 +1660,7 @@ "source_location": "L82", "_origin": "ast", "id": "app_api_bx_reimburse_get_generated_title", - "community": 19, + "community": 15, "norm_label": "get_generated_title()" }, { @@ -1670,7 +1680,7 @@ "source_location": "L131", "_origin": "ast", "id": "app_api_bx_reimburse_import_reimburses", - "community": 19, + "community": 15, "norm_label": "import_reimburses()" }, { @@ -1680,7 +1690,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_bx_reimburse_py_uploadfile", - "community": 19, + "community": 15, "norm_label": "uploadfile" }, { @@ -1690,7 +1700,7 @@ "source_location": "L147", "_origin": "ast", "id": "app_api_bx_reimburse_list_reimburses", - "community": 19, + "community": 15, "norm_label": "list_reimburses()" }, { @@ -1700,7 +1710,7 @@ "source_location": "L193", "_origin": "ast", "id": "app_api_bx_reimburse_my_reimburses", - "community": 19, + "community": 15, "norm_label": "my_reimburses()" }, { @@ -1710,7 +1720,7 @@ "source_location": "L238", "_origin": "ast", "id": "app_api_bx_reimburse_my_reimburse_stats", - "community": 19, + "community": 15, "norm_label": "my_reimburse_stats()" }, { @@ -1720,7 +1730,7 @@ "source_location": "L248", "_origin": "ast", "id": "app_api_bx_reimburse_reimburse_status_counts", - "community": 19, + "community": 15, "norm_label": "reimburse_status_counts()" }, { @@ -1730,7 +1740,7 @@ "source_location": "L257", "_origin": "ast", "id": "app_api_bx_reimburse_pending_approval", - "community": 19, + "community": 15, "norm_label": "pending_approval()" }, { @@ -1740,7 +1750,7 @@ "source_location": "L289", "_origin": "ast", "id": "app_api_bx_reimburse_pending_approval_stats", - "community": 19, + "community": 15, "norm_label": "pending_approval_stats()" }, { @@ -1750,7 +1760,7 @@ "source_location": "L299", "_origin": "ast", "id": "app_api_bx_reimburse_approved_by_me", - "community": 19, + "community": 15, "norm_label": "approved_by_me()" }, { @@ -1760,7 +1770,7 @@ "source_location": "L331", "_origin": "ast", "id": "app_api_bx_reimburse_get_reimburse", - "community": 19, + "community": 15, "norm_label": "get_reimburse()" }, { @@ -1770,7 +1780,7 @@ "source_location": "L345", "_origin": "ast", "id": "app_api_bx_reimburse_get_approvals", - "community": 19, + "community": 15, "norm_label": "get_approvals()" }, { @@ -1780,7 +1790,7 @@ "source_location": "L358", "_origin": "ast", "id": "app_api_bx_reimburse_get_approval_history", - "community": 19, + "community": 15, "norm_label": "get_approval_history()" }, { @@ -1790,7 +1800,7 @@ "source_location": "L371", "_origin": "ast", "id": "app_api_bx_reimburse_create_reimburse", - "community": 19, + "community": 15, "norm_label": "create_reimburse()" }, { @@ -1800,7 +1810,7 @@ "source_location": "L425", "_origin": "ast", "id": "app_api_bx_reimburse_update_reimburse", - "community": 19, + "community": 15, "norm_label": "update_reimburse()" }, { @@ -1810,7 +1820,7 @@ "source_location": "L470", "_origin": "ast", "id": "app_api_bx_reimburse_submit_reimburse", - "community": 19, + "community": 15, "norm_label": "submit_reimburse()" }, { @@ -1820,7 +1830,7 @@ "source_location": "L492", "_origin": "ast", "id": "app_api_bx_reimburse_approve_reimburse", - "community": 19, + "community": 15, "norm_label": "approve_reimburse()" }, { @@ -1830,7 +1840,7 @@ "source_location": "L508", "_origin": "ast", "id": "app_api_bx_reimburse_reject_reimburse", - "community": 19, + "community": 15, "norm_label": "reject_reimburse()" }, { @@ -1840,7 +1850,7 @@ "source_location": "L524", "_origin": "ast", "id": "app_api_bx_reimburse_withdraw_reimburse", - "community": 19, + "community": 15, "norm_label": "withdraw_reimburse()" }, { @@ -1850,7 +1860,7 @@ "source_location": "L542", "_origin": "ast", "id": "app_api_bx_reimburse_delete_reimburse", - "community": 19, + "community": 15, "norm_label": "delete_reimburse()" }, { @@ -1860,7 +1870,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_bx_workflow", - "community": 14, + "community": 64, "norm_label": "workflow.py" }, { @@ -1870,7 +1880,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_api_bx_workflow_list_workflows", - "community": 14, + "community": 64, "norm_label": "list_workflows()" }, { @@ -1880,7 +1890,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_bx_workflow_py_session", - "community": 14, + "community": 64, "norm_label": "session" }, { @@ -1890,7 +1900,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_api_bx_workflow_get_workflow_by_biz_type", - "community": 14, + "community": 64, "norm_label": "get_workflow_by_biz_type()" }, { @@ -1900,7 +1910,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_api_bx_workflow_get_workflow", - "community": 14, + "community": 64, "norm_label": "get_workflow()" }, { @@ -1910,7 +1920,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_api_bx_workflow_create_workflow", - "community": 14, + "community": 64, "norm_label": "create_workflow()" }, { @@ -1920,7 +1930,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_api_bx_workflow_update_workflow", - "community": 14, + "community": 64, "norm_label": "update_workflow()" }, { @@ -1930,7 +1940,7 @@ "source_location": "L97", "_origin": "ast", "id": "app_api_bx_workflow_save_workflow_nodes", - "community": 14, + "community": 64, "norm_label": "save_workflow_nodes()" }, { @@ -1940,7 +1950,7 @@ "source_location": "L119", "_origin": "ast", "id": "app_api_bx_workflow_delete_workflow", - "community": 14, + "community": 64, "norm_label": "delete_workflow()" }, { @@ -1950,7 +1960,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_crm", - "community": 31, + "community": 7, "norm_label": "crm.py" }, { @@ -1960,7 +1970,7 @@ "source_location": "L330", "_origin": "ast", "id": "app_api_crm_category_tree", - "community": 7, + "community": 45, "norm_label": "category_tree()" }, { @@ -2000,7 +2010,7 @@ "source_location": "L418", "_origin": "ast", "id": "app_api_crm_customer_options", - "community": 99, + "community": 7, "norm_label": "customer_options()" }, { @@ -2010,7 +2020,7 @@ "source_location": "L442", "_origin": "ast", "id": "app_api_crm_customer_create", - "community": 6, + "community": 7, "norm_label": "customer_create()" }, { @@ -2020,7 +2030,7 @@ "source_location": "L472", "_origin": "ast", "id": "app_api_crm_customer_update", - "community": 6, + "community": 7, "norm_label": "customer_update()" }, { @@ -2030,7 +2040,7 @@ "source_location": "L499", "_origin": "ast", "id": "app_api_crm_customer_delete", - "community": 7, + "community": 12, "norm_label": "customer_delete()" }, { @@ -2040,7 +2050,7 @@ "source_location": "L527", "_origin": "ast", "id": "app_api_crm_customer_generate_no", - "community": 7, + "community": 3, "norm_label": "customer_generate_no()" }, { @@ -2050,7 +2060,7 @@ "source_location": "L543", "_origin": "ast", "id": "app_api_crm_category_add", - "community": 7, + "community": 45, "norm_label": "category_add()" }, { @@ -2060,7 +2070,7 @@ "source_location": "L562", "_origin": "ast", "id": "app_api_crm_category_update", - "community": 7, + "community": 45, "norm_label": "category_update()" }, { @@ -2070,7 +2080,7 @@ "source_location": "L582", "_origin": "ast", "id": "app_api_crm_category_delete", - "community": 7, + "community": 45, "norm_label": "category_delete()" }, { @@ -2090,7 +2100,7 @@ "source_location": "L639", "_origin": "ast", "id": "app_api_crm_product_detail", - "community": 7, + "community": 45, "norm_label": "product_detail()" }, { @@ -2100,7 +2110,7 @@ "source_location": "L660", "_origin": "ast", "id": "app_api_crm_product_add", - "community": 7, + "community": 45, "norm_label": "product_add()" }, { @@ -2110,7 +2120,7 @@ "source_location": "L684", "_origin": "ast", "id": "app_api_crm_product_update", - "community": 7, + "community": 45, "norm_label": "product_update()" }, { @@ -2120,7 +2130,7 @@ "source_location": "L705", "_origin": "ast", "id": "app_api_crm_product_delete", - "community": 7, + "community": 45, "norm_label": "product_delete()" }, { @@ -2130,7 +2140,7 @@ "source_location": "L733", "_origin": "ast", "id": "app_api_crm_product_update_status", - "community": 7, + "community": 45, "norm_label": "product_update_status()" }, { @@ -2140,7 +2150,7 @@ "source_location": "L754", "_origin": "ast", "id": "app_api_crm_product_options", - "community": 7, + "community": 45, "norm_label": "product_options()" }, { @@ -2220,7 +2230,7 @@ "source_location": "L1032", "_origin": "ast", "id": "app_api_crm_customer_check_duplicate", - "community": 7, + "community": 3, "norm_label": "customer_check_duplicate()" }, { @@ -2310,7 +2320,7 @@ "source_location": "L1328", "_origin": "ast", "id": "app_api_crm_customer_park_area_list", - "community": 7, + "community": 3, "norm_label": "customer_park_area_list()" }, { @@ -2320,7 +2330,7 @@ "source_location": "L1348", "_origin": "ast", "id": "app_api_crm_pool_customer_list", - "community": 31, + "community": 105, "norm_label": "pool_customer_list()" }, { @@ -2330,7 +2340,7 @@ "source_location": "L1380", "_origin": "ast", "id": "app_api_crm_pool_customer_assign", - "community": 31, + "community": 105, "norm_label": "pool_customer_assign()" }, { @@ -2340,7 +2350,7 @@ "source_location": "L1399", "_origin": "ast", "id": "app_api_crm_pool_customer_claim", - "community": 31, + "community": 105, "norm_label": "pool_customer_claim()" }, { @@ -2350,7 +2360,7 @@ "source_location": "L1417", "_origin": "ast", "id": "app_api_crm_pool_record_list", - "community": 171, + "community": 105, "norm_label": "pool_record_list()" }, { @@ -2360,7 +2370,7 @@ "source_location": "L1447", "_origin": "ast", "id": "app_api_crm_pool_record_detail", - "community": 31, + "community": 105, "norm_label": "pool_record_detail()" }, { @@ -2380,7 +2390,7 @@ "source_location": "L1505", "_origin": "ast", "id": "app_api_crm_contact_detail", - "community": 72, + "community": 7, "norm_label": "contact_detail()" }, { @@ -2390,7 +2400,7 @@ "source_location": "L1529", "_origin": "ast", "id": "app_api_crm_contact_by_customer", - "community": 72, + "community": 7, "norm_label": "contact_by_customer()" }, { @@ -2400,7 +2410,7 @@ "source_location": "L1550", "_origin": "ast", "id": "app_api_crm_contact_add", - "community": 31, + "community": 12, "norm_label": "contact_add()" }, { @@ -2410,7 +2420,7 @@ "source_location": "L1573", "_origin": "ast", "id": "app_api_crm_contact_update", - "community": 31, + "community": 12, "norm_label": "contact_update()" }, { @@ -2420,7 +2430,7 @@ "source_location": "L1594", "_origin": "ast", "id": "app_api_crm_contact_delete", - "community": 31, + "community": 12, "norm_label": "contact_delete()" }, { @@ -2430,7 +2440,7 @@ "source_location": "L1614", "_origin": "ast", "id": "app_api_crm_contact_set_primary", - "community": 72, + "community": 7, "norm_label": "contact_set_primary()" }, { @@ -2500,7 +2510,7 @@ "source_location": "L1794", "_origin": "ast", "id": "app_api_crm_follow_detail", - "community": 6, + "community": 7, "norm_label": "follow_detail()" }, { @@ -2510,7 +2520,7 @@ "source_location": "L1820", "_origin": "ast", "id": "app_api_crm_follow_by_customer", - "community": 6, + "community": 7, "norm_label": "follow_by_customer()" }, { @@ -2590,7 +2600,7 @@ "source_location": "L1934", "_origin": "ast", "id": "app_api_crm_pool_rule_list", - "community": 171, + "community": 7, "norm_label": "pool_rule_list()" }, { @@ -2600,7 +2610,7 @@ "source_location": "L1965", "_origin": "ast", "id": "app_api_crm_pool_rule_detail", - "community": 171, + "community": 7, "norm_label": "pool_rule_detail()" }, { @@ -2610,7 +2620,7 @@ "source_location": "L1986", "_origin": "ast", "id": "app_api_crm_pool_rule_add", - "community": 171, + "community": 7, "norm_label": "pool_rule_add()" }, { @@ -2620,7 +2630,7 @@ "source_location": "L2013", "_origin": "ast", "id": "app_api_crm_pool_rule_update", - "community": 171, + "community": 7, "norm_label": "pool_rule_update()" }, { @@ -2630,7 +2640,7 @@ "source_location": "L2042", "_origin": "ast", "id": "app_api_crm_pool_rule_delete", - "community": 171, + "community": 7, "norm_label": "pool_rule_delete()" }, { @@ -2640,7 +2650,7 @@ "source_location": "L2059", "_origin": "ast", "id": "app_api_crm_pool_rule_update_status", - "community": 171, + "community": 7, "norm_label": "pool_rule_update_status()" }, { @@ -2650,7 +2660,7 @@ "source_location": "L2079", "_origin": "ast", "id": "app_api_crm_pool_rule_execute", - "community": 171, + "community": 7, "norm_label": "pool_rule_execute()" }, { @@ -2760,7 +2770,7 @@ "source_location": "L2333", "_origin": "ast", "id": "app_api_crm_opportunity_detail", - "community": 31, + "community": 7, "norm_label": "opportunity_detail()" }, { @@ -2770,7 +2780,7 @@ "source_location": "L2363", "_origin": "ast", "id": "app_api_crm_opportunity_add", - "community": 31, + "community": 7, "norm_label": "opportunity_add()" }, { @@ -2780,7 +2790,7 @@ "source_location": "L2387", "_origin": "ast", "id": "app_api_crm_opportunity_update", - "community": 31, + "community": 7, "norm_label": "opportunity_update()" }, { @@ -2790,7 +2800,7 @@ "source_location": "L2408", "_origin": "ast", "id": "app_api_crm_opportunity_delete", - "community": 31, + "community": 7, "norm_label": "opportunity_delete()" }, { @@ -2800,7 +2810,7 @@ "source_location": "L2429", "_origin": "ast", "id": "app_api_crm_opportunity_assign", - "community": 31, + "community": 7, "norm_label": "opportunity_assign()" }, { @@ -2810,7 +2820,7 @@ "source_location": "L2456", "_origin": "ast", "id": "app_api_crm_opportunity_change_stage", - "community": 31, + "community": 7, "norm_label": "opportunity_change_stage()" }, { @@ -2820,7 +2830,7 @@ "source_location": "L2486", "_origin": "ast", "id": "app_api_crm_opportunity_mark_won", - "community": 31, + "community": 7, "norm_label": "opportunity_mark_won()" }, { @@ -2830,7 +2840,7 @@ "source_location": "L2514", "_origin": "ast", "id": "app_api_crm_opportunity_mark_lost", - "community": 31, + "community": 7, "norm_label": "opportunity_mark_lost()" }, { @@ -2840,7 +2850,7 @@ "source_location": "L2543", "_origin": "ast", "id": "app_api_crm_opportunity_batch_update_stage", - "community": 31, + "community": 7, "norm_label": "opportunity_batch_update_stage()" }, { @@ -2850,7 +2860,7 @@ "source_location": "L2572", "_origin": "ast", "id": "app_api_crm_opportunity_batch_update_expect_date", - "community": 31, + "community": 7, "norm_label": "opportunity_batch_update_expect_date()" }, { @@ -2860,7 +2870,7 @@ "source_location": "L2600", "_origin": "ast", "id": "app_api_crm_opportunity_stage_log_list", - "community": 31, + "community": 7, "norm_label": "opportunity_stage_log_list()" }, { @@ -2930,7 +2940,7 @@ "source_location": "L2768", "_origin": "ast", "id": "app_api_crm_opportunity_follow_list", - "community": 31, + "community": 7, "norm_label": "opportunity_follow_list()" }, { @@ -2940,7 +2950,7 @@ "source_location": "L2800", "_origin": "ast", "id": "app_api_crm_opportunity_follow_add", - "community": 31, + "community": 7, "norm_label": "opportunity_follow_add()" }, { @@ -2950,7 +2960,7 @@ "source_location": "L2825", "_origin": "ast", "id": "app_api_crm_opportunity_follow_update", - "community": 31, + "community": 7, "norm_label": "opportunity_follow_update()" }, { @@ -2960,7 +2970,7 @@ "source_location": "L2848", "_origin": "ast", "id": "app_api_crm_opportunity_follow_delete", - "community": 31, + "community": 7, "norm_label": "opportunity_follow_delete()" }, { @@ -2970,7 +2980,7 @@ "source_location": "L2872", "_origin": "ast", "id": "app_api_crm_opportunity_follow_detail", - "community": 31, + "community": 7, "norm_label": "opportunity_follow_detail()" }, { @@ -2980,7 +2990,7 @@ "source_location": "L2892", "_origin": "ast", "id": "app_api_crm_opportunity_product_list", - "community": 31, + "community": 7, "norm_label": "opportunity_product_list()" }, { @@ -2990,7 +3000,7 @@ "source_location": "L2925", "_origin": "ast", "id": "app_api_crm_opportunity_product_list_by_opportunity", - "community": 31, + "community": 7, "norm_label": "opportunity_product_list_by_opportunity()" }, { @@ -3000,7 +3010,7 @@ "source_location": "L2946", "_origin": "ast", "id": "app_api_crm_opportunity_product_add", - "community": 31, + "community": 7, "norm_label": "opportunity_product_add()" }, { @@ -3010,7 +3020,7 @@ "source_location": "L2971", "_origin": "ast", "id": "app_api_crm_opportunity_product_batch_add", - "community": 31, + "community": 7, "norm_label": "opportunity_product_batch_add()" }, { @@ -3020,7 +3030,7 @@ "source_location": "L3001", "_origin": "ast", "id": "app_api_crm_opportunity_product_update", - "community": 31, + "community": 7, "norm_label": "opportunity_product_update()" }, { @@ -3030,7 +3040,7 @@ "source_location": "L3024", "_origin": "ast", "id": "app_api_crm_opportunity_product_delete", - "community": 31, + "community": 7, "norm_label": "opportunity_product_delete()" }, { @@ -3040,7 +3050,7 @@ "source_location": "L3045", "_origin": "ast", "id": "app_api_crm_opportunity_product_detail", - "community": 31, + "community": 7, "norm_label": "opportunity_product_detail()" }, { @@ -3060,7 +3070,7 @@ "source_location": "L3107", "_origin": "ast", "id": "app_api_crm_supplier_info_list", - "community": 7, + "community": 60, "norm_label": "supplier_info_list()" }, { @@ -3160,7 +3170,7 @@ "source_location": "L3354", "_origin": "ast", "id": "app_api_crm_invoice_info_add", - "community": 7, + "community": 81, "norm_label": "invoice_info_add()" }, { @@ -3170,7 +3180,7 @@ "source_location": "L3379", "_origin": "ast", "id": "app_api_crm_invoice_info_update", - "community": 7, + "community": 81, "norm_label": "invoice_info_update()" }, { @@ -3190,7 +3200,7 @@ "source_location": "L3430", "_origin": "ast", "id": "app_api_crm_invoice_info_set_default", - "community": 7, + "community": 81, "norm_label": "invoice_info_set_default()" }, { @@ -3270,7 +3280,7 @@ "source_location": "L3664", "_origin": "ast", "id": "app_api_crm_clue_check_convert", - "community": 7, + "community": 3, "norm_label": "clue_check_convert()" }, { @@ -3340,7 +3350,7 @@ "source_location": "L3895", "_origin": "ast", "id": "app_api_crm_clue_park_area_list", - "community": 7, + "community": 3, "norm_label": "clue_park_area_list()" }, { @@ -3420,7 +3430,7 @@ "source_location": "L4218", "_origin": "ast", "id": "app_api_crm_clue_check_duplicate", - "community": 7, + "community": 3, "norm_label": "clue_check_duplicate()" }, { @@ -3430,7 +3440,7 @@ "source_location": "L4242", "_origin": "ast", "id": "app_api_crm_clue_follow_detail", - "community": 39, + "community": 7, "norm_label": "clue_follow_detail()" }, { @@ -3550,7 +3560,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_crm_rationale_1", - "community": 31, + "community": 7, "norm_label": "crm \u7ba1\u7406\u63a5\u53e3(\u4ea7\u54c1\u5206\u7c7b + \u4ea7\u54c1 + excel \u5bfc\u5165\u5bfc\u51fa)" }, { @@ -3560,7 +3570,7 @@ "source_location": "L423", "_origin": "ast", "id": "app_api_crm_rationale_423", - "community": 99, + "community": 7, "norm_label": "\u5ba2\u6237\u4e0b\u62c9\u9009\u9879(\u79df\u6237\u5185\u53ea\u8bfb,\u4e0d\u505a owner \u6570\u636e\u6743\u9650)" }, { @@ -3570,7 +3580,7 @@ "source_location": "L710", "_origin": "ast", "id": "app_api_crm_rationale_710", - "community": 7, + "community": 45, "norm_label": "\u5220\u9664\u4ea7\u54c1(\u652f\u6301\u5355\u6761 body.id \u548c\u6279\u91cf body.ids)" }, { @@ -3580,7 +3590,7 @@ "source_location": "L3112", "_origin": "ast", "id": "app_api_crm_rationale_3112", - "community": 7, + "community": 60, "norm_label": "\u5206\u9875\u67e5\u8be2\u4f9b\u65b9\u5217\u8868 \u2014 java: crmsupplierinfocontroller.list" }, { @@ -3670,7 +3680,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_api_crm_contract_routes_register_contract_routes", - "community": 20, + "community": 50, "norm_label": "register_contract_routes()" }, { @@ -3750,7 +3760,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_db_init", - "community": 106, + "community": 98, "norm_label": "__init__.py" }, { @@ -3760,7 +3770,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_api_db_init_db_health", - "community": 106, + "community": 98, "norm_label": "db_health()" }, { @@ -3770,7 +3780,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_db_init_rationale_1", - "community": 106, + "community": 98, "norm_label": "\u5730\u78c5 api \u8def\u7531\u805a\u5408 \u2014 rest \u98ce\u683c,\u534f\u8bae\u5bf9\u9f50\u539f simple-dibang-xiaoshou\u3002" }, { @@ -4420,7 +4430,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_db_public_vehicles", - "community": 114, + "community": 51, "norm_label": "public_vehicles.py" }, { @@ -4430,7 +4440,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_api_db_public_vehicles_resolve_tenant_no", - "community": 114, + "community": 51, "norm_label": "_resolve_tenant_no()" }, { @@ -4440,7 +4450,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_db_public_vehicles_py_session", - "community": 114, + "community": 51, "norm_label": "session" }, { @@ -4450,7 +4460,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_api_db_public_vehicles_list_public_vehicle_plates", - "community": 114, + "community": 51, "norm_label": "list_public_vehicle_plates()" }, { @@ -4460,7 +4470,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_db_public_vehicles_rationale_1", - "community": 114, + "community": 51, "norm_label": "\u5730\u78c5\u516c\u5171\u53ea\u8bfb:\u514d\u767b\u8f66\u724c options(\u73b0\u573a\u586b\u5199\u9875)" }, { @@ -4470,7 +4480,7 @@ "source_location": "L49", "_origin": "ast", "id": "app_api_db_public_vehicles_rationale_49", - "community": 114, + "community": 51, "norm_label": "\u514d\u767b:\u6309\u51fa\u5165\u5e93/\u8ba1\u5212\u89e3\u6790 tenant_no,\u8fd4\u56de pl_vehicle \u8f66\u724c(self + carrier)\u3002" }, { @@ -4480,7 +4490,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_db_weighing", - "community": 62, + "community": 20, "norm_label": "weighing.py" }, { @@ -4490,7 +4500,7 @@ "source_location": "L41", "_origin": "ast", "id": "app_api_db_weighing_base_query", - "community": 62, + "community": 20, "norm_label": "_base_query()" }, { @@ -4500,7 +4510,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_db_weighing_py_session", - "community": 62, + "community": 20, "norm_label": "session" }, { @@ -4510,7 +4520,7 @@ "source_location": "L49", "_origin": "ast", "id": "app_api_db_weighing_get_weighing", - "community": 62, + "community": 20, "norm_label": "_get_weighing()" }, { @@ -4520,7 +4530,7 @@ "source_location": "L70", "_origin": "ast", "id": "app_api_db_weighing_apply_weighing_product_update", - "community": 62, + "community": 20, "norm_label": "_apply_weighing_product_update()" }, { @@ -4530,7 +4540,7 @@ "source_location": "L86", "_origin": "ast", "id": "app_api_db_weighing_apply_weighing_update", - "community": 62, + "community": 20, "norm_label": "_apply_weighing_update()" }, { @@ -4540,7 +4550,7 @@ "source_location": "L108", "_origin": "ast", "id": "app_api_db_weighing_list_weighing", - "community": 62, + "community": 20, "norm_label": "list_weighing()" }, { @@ -4550,7 +4560,7 @@ "source_location": "L199", "_origin": "ast", "id": "app_api_db_weighing_create_weighing", - "community": 62, + "community": 20, "norm_label": "create_weighing()" }, { @@ -4560,7 +4570,7 @@ "source_location": "L311", "_origin": "ast", "id": "app_api_db_weighing_update_weighing", - "community": 62, + "community": 20, "norm_label": "update_weighing()" }, { @@ -4570,7 +4580,7 @@ "source_location": "L339", "_origin": "ast", "id": "app_api_db_weighing_void_weighing", - "community": 62, + "community": 20, "norm_label": "void_weighing()" }, { @@ -4580,7 +4590,7 @@ "source_location": "L360", "_origin": "ast", "id": "app_api_db_weighing_delete_weighing", - "community": 62, + "community": 20, "norm_label": "delete_weighing()" }, { @@ -4590,7 +4600,7 @@ "source_location": "L374", "_origin": "ast", "id": "app_api_db_weighing_weighingrelateddata", - "community": 62, + "community": 20, "norm_label": "weighingrelateddata" }, { @@ -4600,7 +4610,7 @@ "source_location": "L380", "_origin": "ast", "id": "app_api_db_weighing_get_weighing_related", - "community": 62, + "community": 20, "norm_label": "get_weighing_related()" }, { @@ -4610,7 +4620,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_duty", - "community": 26, + "community": 66, "norm_label": "duty.py" }, { @@ -4620,7 +4630,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_api_duty_enrich_assign_names", - "community": 26, + "community": 66, "norm_label": "_enrich_assign_names()" }, { @@ -4630,7 +4640,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_duty_py_session", - "community": 26, + "community": 66, "norm_label": "session" }, { @@ -4640,7 +4650,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_api_duty_month_summary", - "community": 26, + "community": 66, "norm_label": "month_summary()" }, { @@ -4650,7 +4660,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_api_duty_day_detail", - "community": 26, + "community": 66, "norm_label": "day_detail()" }, { @@ -4660,7 +4670,7 @@ "source_location": "L65", "_origin": "ast", "id": "app_api_duty_duty_user_options", - "community": 26, + "community": 66, "norm_label": "duty_user_options()" }, { @@ -4670,7 +4680,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_api_duty_save_day", - "community": 26, + "community": 66, "norm_label": "save_day()" }, { @@ -4680,7 +4690,7 @@ "source_location": "L92", "_origin": "ast", "id": "app_api_duty_set_link", - "community": 26, + "community": 66, "norm_label": "set_link()" }, { @@ -4690,7 +4700,7 @@ "source_location": "L108", "_origin": "ast", "id": "app_api_duty_delete_assignment", - "community": 26, + "community": 66, "norm_label": "delete_assignment()" }, { @@ -4700,7 +4710,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_api_duty_rationale_22", - "community": 26, + "community": 66, "norm_label": "\u6307\u5b9a\u7528\u6237\u65f6\u8865\u5168 personname(\u7528 nick_name)\u3002" }, { @@ -4710,7 +4720,7 @@ "source_location": "L69", "_origin": "ast", "id": "app_api_duty_rationale_69", - "community": 26, + "community": 66, "norm_label": "\u503c\u73ed\u53ef\u5b89\u6392\u4eba\u5458:\u4ec5\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\u4e0b\u7684\u542f\u7528\u7528\u6237\u3002" }, { @@ -4720,7 +4730,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_leave", - "community": 12, + "community": 121, "norm_label": "leave.py" }, { @@ -4730,7 +4740,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_api_leave_leave_local_callback", - "community": 12, + "community": 121, "norm_label": "_leave_local_callback()" }, { @@ -4740,7 +4750,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_leave_py_session", - "community": 12, + "community": 121, "norm_label": "session" }, { @@ -4750,7 +4760,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_api_leave_list_leaves", - "community": 12, + "community": 121, "norm_label": "list_leaves()" }, { @@ -4760,7 +4770,7 @@ "source_location": "L62", "_origin": "ast", "id": "app_api_leave_create_leave", - "community": 12, + "community": 121, "norm_label": "create_leave()" }, { @@ -4770,7 +4780,7 @@ "source_location": "L87", "_origin": "ast", "id": "app_api_leave_submit_leave", - "community": 12, + "community": 121, "norm_label": "submit_leave()" }, { @@ -4780,7 +4790,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_api_leave_leave_workflow_callback", - "community": 12, + "community": 121, "norm_label": "leave_workflow_callback()" }, { @@ -4790,7 +4800,7 @@ "source_location": "L161", "_origin": "ast", "id": "app_api_leave_get_leave", - "community": 12, + "community": 121, "norm_label": "get_leave()" }, { @@ -4800,7 +4810,7 @@ "source_location": "L174", "_origin": "ast", "id": "app_api_leave_delete_leave", - "community": 12, + "community": 121, "norm_label": "delete_leave()" }, { @@ -4810,7 +4820,7 @@ "source_location": "L191", "_origin": "ast", "id": "app_api_leave_update_leave", - "community": 12, + "community": 121, "norm_label": "update_leave()" }, { @@ -4820,7 +4830,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_menu", - "community": 160, + "community": 121, "norm_label": "menu.py" }, { @@ -4830,7 +4840,7 @@ "source_location": "L695", "_origin": "ast", "id": "app_api_menu_get_menu_list", - "community": 160, + "community": 121, "norm_label": "get_menu_list()" }, { @@ -4840,7 +4850,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_menu_rationale_1", - "community": 160, + "community": 121, "norm_label": "\u8fd0\u8425\u7aef\u83dc\u5355\u63a5\u53e3(\u4e0e web-admin \u524d\u7aef\u9759\u6001\u8def\u7531 sqxp.ts \u5bf9\u9f50,14 \u4e2a\u4e00\u7ea7\u83dc\u5355)" }, { @@ -4850,7 +4860,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_monitor", - "community": 33, + "community": 71, "norm_label": "monitor.py" }, { @@ -4860,7 +4870,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_api_monitor_user_info", - "community": 33, + "community": 71, "norm_label": "_user_info()" }, { @@ -4870,7 +4880,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_api_monitor_operlog_list", - "community": 33, + "community": 71, "norm_label": "operlog_list()" }, { @@ -4880,7 +4890,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_monitor_py_session", - "community": 33, + "community": 71, "norm_label": "session" }, { @@ -4890,7 +4900,7 @@ "source_location": "L67", "_origin": "ast", "id": "app_api_monitor_operlog_detail", - "community": 33, + "community": 71, "norm_label": "operlog_detail()" }, { @@ -4900,7 +4910,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_api_monitor_rationale_33", - "community": 33, + "community": 71, "norm_label": "\u64cd\u4f5c\u65e5\u5fd7\u5206\u9875\u5217\u8868(\u57fa\u4e8e api \u8bf7\u6c42\u65e5\u5fd7\u9002\u914d ruoyi operlog \u7ed3\u6784)" }, { @@ -4920,7 +4930,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_base_data", - "community": 71, + "community": 115, "norm_label": "base_data.py" }, { @@ -4930,7 +4940,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_api_pl_base_data_list_carriers", - "community": 25, + "community": 115, "norm_label": "list_carriers()" }, { @@ -4940,7 +4950,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_base_data_py_session", - "community": 25, + "community": 115, "norm_label": "session" }, { @@ -4950,7 +4960,7 @@ "source_location": "L118", "_origin": "ast", "id": "app_api_pl_base_data_create_carrier", - "community": 25, + "community": 115, "norm_label": "create_carrier()" }, { @@ -4960,7 +4970,7 @@ "source_location": "L148", "_origin": "ast", "id": "app_api_pl_base_data_get_carrier", - "community": 25, + "community": 115, "norm_label": "get_carrier()" }, { @@ -4970,7 +4980,7 @@ "source_location": "L159", "_origin": "ast", "id": "app_api_pl_base_data_update_carrier", - "community": 25, + "community": 115, "norm_label": "update_carrier()" }, { @@ -4980,7 +4990,7 @@ "source_location": "L188", "_origin": "ast", "id": "app_api_pl_base_data_delete_carrier", - "community": 25, + "community": 115, "norm_label": "delete_carrier()" }, { @@ -4990,7 +5000,7 @@ "source_location": "L202", "_origin": "ast", "id": "app_api_pl_base_data_approve_carrier", - "community": 25, + "community": 115, "norm_label": "approve_carrier()" }, { @@ -5000,7 +5010,7 @@ "source_location": "L211", "_origin": "ast", "id": "app_api_pl_base_data_reject_carrier", - "community": 25, + "community": 115, "norm_label": "reject_carrier()" }, { @@ -5010,7 +5020,7 @@ "source_location": "L240", "_origin": "ast", "id": "app_api_pl_base_data_vehicle_to_read", - "community": 71, + "community": 115, "norm_label": "_vehicle_to_read()" }, { @@ -5020,7 +5030,7 @@ "source_location": "L257", "_origin": "ast", "id": "app_api_pl_base_data_vehicle_to_detail", - "community": 109, + "community": 115, "norm_label": "_vehicle_to_detail()" }, { @@ -5030,7 +5040,7 @@ "source_location": "L275", "_origin": "ast", "id": "app_api_pl_base_data_list_vehicles", - "community": 71, + "community": 115, "norm_label": "list_vehicles()" }, { @@ -5040,7 +5050,7 @@ "source_location": "L380", "_origin": "ast", "id": "app_api_pl_base_data_create_vehicle", - "community": 109, + "community": 115, "norm_label": "create_vehicle()" }, { @@ -5050,7 +5060,7 @@ "source_location": "L457", "_origin": "ast", "id": "app_api_pl_base_data_get_vehicle", - "community": 109, + "community": 115, "norm_label": "get_vehicle()" }, { @@ -5060,7 +5070,7 @@ "source_location": "L468", "_origin": "ast", "id": "app_api_pl_base_data_update_vehicle", - "community": 109, + "community": 115, "norm_label": "update_vehicle()" }, { @@ -5070,7 +5080,7 @@ "source_location": "L542", "_origin": "ast", "id": "app_api_pl_base_data_delete_vehicle", - "community": 25, + "community": 115, "norm_label": "delete_vehicle()" }, { @@ -5080,7 +5090,7 @@ "source_location": "L575", "_origin": "ast", "id": "app_api_pl_base_data_personnel_to_read", - "community": 71, + "community": 115, "norm_label": "_personnel_to_read()" }, { @@ -5090,7 +5100,7 @@ "source_location": "L590", "_origin": "ast", "id": "app_api_pl_base_data_personnel_to_detail", - "community": 71, + "community": 115, "norm_label": "_personnel_to_detail()" }, { @@ -5100,7 +5110,7 @@ "source_location": "L604", "_origin": "ast", "id": "app_api_pl_base_data_list_personnel", - "community": 71, + "community": 115, "norm_label": "list_personnel()" }, { @@ -5110,7 +5120,7 @@ "source_location": "L666", "_origin": "ast", "id": "app_api_pl_base_data_create_personnel", - "community": 71, + "community": 115, "norm_label": "create_personnel()" }, { @@ -5120,7 +5130,7 @@ "source_location": "L718", "_origin": "ast", "id": "app_api_pl_base_data_get_personnel", - "community": 64, + "community": 115, "norm_label": "get_personnel()" }, { @@ -5130,7 +5140,7 @@ "source_location": "L729", "_origin": "ast", "id": "app_api_pl_base_data_update_personnel", - "community": 71, + "community": 115, "norm_label": "update_personnel()" }, { @@ -5140,7 +5150,7 @@ "source_location": "L785", "_origin": "ast", "id": "app_api_pl_base_data_delete_personnel", - "community": 25, + "community": 115, "norm_label": "delete_personnel()" }, { @@ -5200,7 +5210,7 @@ "source_location": "L934", "_origin": "ast", "id": "app_api_pl_base_data_delete_driver", - "community": 25, + "community": 115, "norm_label": "delete_driver()" }, { @@ -5210,7 +5220,7 @@ "source_location": "L953", "_origin": "ast", "id": "app_api_pl_base_data_bind_vehicle_driver", - "community": 109, + "community": 115, "norm_label": "bind_vehicle_driver()" }, { @@ -5220,7 +5230,7 @@ "source_location": "L985", "_origin": "ast", "id": "app_api_pl_base_data_unbind_vehicle_driver", - "community": 25, + "community": 115, "norm_label": "unbind_vehicle_driver()" }, { @@ -5230,7 +5240,7 @@ "source_location": "L1017", "_origin": "ast", "id": "app_api_pl_base_data_paste_recognize_commit", - "community": 64, + "community": 115, "norm_label": "paste_recognize_commit()" }, { @@ -5240,7 +5250,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_base_data_rationale_1", - "community": 71, + "community": 115, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e api(\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u4eba\u5458)" }, { @@ -5250,7 +5260,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_freight", - "community": 10, + "community": 31, "norm_label": "freight.py" }, { @@ -5260,7 +5270,7 @@ "source_location": "L30", "_origin": "ast", "id": "app_api_pl_freight_generate_settlement_no", - "community": 10, + "community": 31, "norm_label": "_generate_settlement_no()" }, { @@ -5270,7 +5280,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_freight_py_session", - "community": 10, + "community": 31, "norm_label": "session" }, { @@ -5280,7 +5290,7 @@ "source_location": "L49", "_origin": "ast", "id": "app_api_pl_freight_list_unsettled_plans", - "community": 10, + "community": 31, "norm_label": "list_unsettled_plans()" }, { @@ -5290,7 +5300,7 @@ "source_location": "L75", "_origin": "ast", "id": "app_api_pl_freight_list_settlements", - "community": 10, + "community": 31, "norm_label": "list_settlements()" }, { @@ -5300,7 +5310,7 @@ "source_location": "L105", "_origin": "ast", "id": "app_api_pl_freight_get_settlement_by_transport", - "community": 10, + "community": 31, "norm_label": "get_settlement_by_transport()" }, { @@ -5310,7 +5320,7 @@ "source_location": "L120", "_origin": "ast", "id": "app_api_pl_freight_create_settlement", - "community": 10, + "community": 31, "norm_label": "create_settlement()" }, { @@ -5320,7 +5330,7 @@ "source_location": "L139", "_origin": "ast", "id": "app_api_pl_freight_get_settlement", - "community": 10, + "community": 31, "norm_label": "get_settlement()" }, { @@ -5330,7 +5340,7 @@ "source_location": "L152", "_origin": "ast", "id": "app_api_pl_freight_update_settlement", - "community": 10, + "community": 31, "norm_label": "update_settlement()" }, { @@ -5340,7 +5350,7 @@ "source_location": "L170", "_origin": "ast", "id": "app_api_pl_freight_cancel_settlement", - "community": 10, + "community": 31, "norm_label": "cancel_settlement()" }, { @@ -5350,7 +5360,7 @@ "source_location": "L182", "_origin": "ast", "id": "app_api_pl_freight_delete_settlement", - "community": 10, + "community": 31, "norm_label": "delete_settlement()" }, { @@ -5360,7 +5370,7 @@ "source_location": "L194", "_origin": "ast", "id": "app_api_pl_freight_submit_settlement_approval", - "community": 10, + "community": 31, "norm_label": "submit_settlement_approval()" }, { @@ -5370,7 +5380,7 @@ "source_location": "L213", "_origin": "ast", "id": "app_api_pl_freight_process_settlement_approval", - "community": 10, + "community": 31, "norm_label": "process_settlement_approval()" }, { @@ -5380,7 +5390,7 @@ "source_location": "L233", "_origin": "ast", "id": "app_api_pl_freight_withdraw_settlement_approval", - "community": 10, + "community": 31, "norm_label": "withdraw_settlement_approval()" }, { @@ -5390,7 +5400,7 @@ "source_location": "L245", "_origin": "ast", "id": "app_api_pl_freight_get_settlement_approval_flow", - "community": 10, + "community": 31, "norm_label": "get_settlement_approval_flow()" }, { @@ -5400,7 +5410,7 @@ "source_location": "L256", "_origin": "ast", "id": "app_api_pl_freight_disburse_settlement", - "community": 10, + "community": 31, "norm_label": "disburse_settlement()" }, { @@ -5410,7 +5420,7 @@ "source_location": "L276", "_origin": "ast", "id": "app_api_pl_freight_submit_settlement_legacy", - "community": 10, + "community": 31, "norm_label": "submit_settlement_legacy()" }, { @@ -5420,7 +5430,7 @@ "source_location": "L285", "_origin": "ast", "id": "app_api_pl_freight_approve_settlement_legacy", - "community": 10, + "community": 31, "norm_label": "approve_settlement_legacy()" }, { @@ -5430,7 +5440,7 @@ "source_location": "L294", "_origin": "ast", "id": "app_api_pl_freight_list_vouchers", - "community": 10, + "community": 31, "norm_label": "list_vouchers()" }, { @@ -5857,7 +5867,7 @@ "label": "_resolve_list_product_name()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L102", + "source_location": "L106", "_origin": "ast", "id": "app_api_pl_plan_resolve_list_product_name", "community": 5, @@ -5867,7 +5877,7 @@ "label": "_resolve_create_date()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L118", + "source_location": "L122", "_origin": "ast", "id": "app_api_pl_plan_resolve_create_date", "community": 5, @@ -5887,7 +5897,7 @@ "label": "_generate_plan_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L122", + "source_location": "L126", "_origin": "ast", "id": "app_api_pl_plan_generate_plan_no", "community": 5, @@ -5907,7 +5917,7 @@ "label": "_format_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L154", + "source_location": "L158", "_origin": "ast", "id": "app_api_pl_plan_format_subpack_slip_no", "community": 5, @@ -5917,7 +5927,7 @@ "label": "_normalize_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L158", + "source_location": "L162", "_origin": "ast", "id": "app_api_pl_plan_normalize_subpack_slip_no", "community": 5, @@ -5927,7 +5937,7 @@ "label": "_subpack_slip_no_seq()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L183", + "source_location": "L187", "_origin": "ast", "id": "app_api_pl_plan_subpack_slip_no_seq", "community": 5, @@ -5937,7 +5947,7 @@ "label": "_ensure_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L191", + "source_location": "L195", "_origin": "ast", "id": "app_api_pl_plan_ensure_subpack_slip_no", "community": 5, @@ -5947,7 +5957,7 @@ "label": "_determine_plan_type()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L223", + "source_location": "L227", "_origin": "ast", "id": "app_api_pl_plan_determine_plan_type", "community": 5, @@ -5957,7 +5967,7 @@ "label": "_get_plan_type_label()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L228", + "source_location": "L232", "_origin": "ast", "id": "app_api_pl_plan_get_plan_type_label", "community": 5, @@ -5967,17 +5977,17 @@ "label": "_generate_notify_message()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L237", + "source_location": "L241", "_origin": "ast", "id": "app_api_pl_plan_generate_notify_message", - "community": 145, + "community": 5, "norm_label": "_generate_notify_message()" }, { "label": "_plan_product_name_exists()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L257", + "source_location": "L261", "_origin": "ast", "id": "app_api_pl_plan_plan_product_name_exists", "community": 5, @@ -5987,7 +5997,7 @@ "label": "_plan_plate_match()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L271", + "source_location": "L275", "_origin": "ast", "id": "app_api_pl_plan_plan_plate_match", "community": 5, @@ -5997,7 +6007,7 @@ "label": "list_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L281", + "source_location": "L285", "_origin": "ast", "id": "app_api_pl_plan_list_plans", "community": 5, @@ -6007,27 +6017,47 @@ "label": "count_plans_by_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L463", + "source_location": "L467", "_origin": "ast", "id": "app_api_pl_plan_count_plans_by_contract", "community": 5, "norm_label": "count_plans_by_contract()" }, + { + "label": "list_contract_gaps()", + "file_type": "code", + "source_file": "app/api/pl/plan.py", + "source_location": "L516", + "_origin": "ast", + "id": "app_api_pl_plan_list_contract_gaps", + "community": 5, + "norm_label": "list_contract_gaps()" + }, + { + "label": "put_plan_side_contracts()", + "file_type": "code", + "source_file": "app/api/pl/plan.py", + "source_location": "L557", + "_origin": "ast", + "id": "app_api_pl_plan_put_plan_side_contracts", + "community": 5, + "norm_label": "put_plan_side_contracts()" + }, { "label": "create_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L517", + "source_location": "L587", "_origin": "ast", "id": "app_api_pl_plan_create_plan", - "community": 5, + "community": 103, "norm_label": "create_plan()" }, { "label": "create_plan_full()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L601", + "source_location": "L671", "_origin": "ast", "id": "app_api_pl_plan_create_plan_full", "community": 5, @@ -6037,7 +6067,7 @@ "label": "create_from_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L735", + "source_location": "L805", "_origin": "ast", "id": "app_api_pl_plan_create_from_contract", "community": 5, @@ -6047,27 +6077,27 @@ "label": "get_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L849", + "source_location": "L919", "_origin": "ast", "id": "app_api_pl_plan_get_plan", - "community": 5, + "community": 103, "norm_label": "get_plan()" }, { "label": "update_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L918", + "source_location": "L988", "_origin": "ast", "id": "app_api_pl_plan_update_plan", - "community": 5, + "community": 103, "norm_label": "update_plan()" }, { "label": "patch_plan_product_certs()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1102", + "source_location": "L1172", "_origin": "ast", "id": "app_api_pl_plan_patch_plan_product_certs", "community": 5, @@ -6077,7 +6107,7 @@ "label": "patch_plan_hazard_cert_ready()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1134", + "source_location": "L1204", "_origin": "ast", "id": "app_api_pl_plan_patch_plan_hazard_cert_ready", "community": 5, @@ -6087,17 +6117,17 @@ "label": "_build_driver_url()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1165", + "source_location": "L1235", "_origin": "ast", "id": "app_api_pl_plan_build_driver_url", - "community": 173, + "community": 5, "norm_label": "_build_driver_url()" }, { "label": "get_plan_arrange_info()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1171", + "source_location": "L1241", "_origin": "ast", "id": "app_api_pl_plan_get_plan_arrange_info", "community": 173, @@ -6107,7 +6137,7 @@ "label": "mark_plan_wait_notice()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1314", + "source_location": "L1384", "_origin": "ast", "id": "app_api_pl_plan_mark_plan_wait_notice", "community": 5, @@ -6117,7 +6147,7 @@ "label": "cancel_plan_wait_notice()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1338", + "source_location": "L1408", "_origin": "ast", "id": "app_api_pl_plan_cancel_plan_wait_notice", "community": 5, @@ -6127,7 +6157,7 @@ "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1365", + "source_location": "L1435", "_origin": "ast", "id": "app_api_pl_plan_cancel_plan", "community": 5, @@ -6137,37 +6167,37 @@ "label": "archive_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1427", + "source_location": "L1497", "_origin": "ast", "id": "app_api_pl_plan_archive_plan", - "community": 5, + "community": 103, "norm_label": "archive_plan()" }, { "label": "update_plan_driver_feedback()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1503", + "source_location": "L1573", "_origin": "ast", "id": "app_api_pl_plan_update_plan_driver_feedback", - "community": 5, + "community": 103, "norm_label": "update_plan_driver_feedback()" }, { "label": "update_plan_site_feedback()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1534", + "source_location": "L1604", "_origin": "ast", "id": "app_api_pl_plan_update_plan_site_feedback", - "community": 5, + "community": 103, "norm_label": "update_plan_site_feedback()" }, { "label": "get_inbound_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1573", + "source_location": "L1643", "_origin": "ast", "id": "app_api_pl_plan_get_inbound_slip_template", "community": 5, @@ -6177,7 +6207,7 @@ "label": "save_inbound_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1584", + "source_location": "L1654", "_origin": "ast", "id": "app_api_pl_plan_save_inbound_slip_template", "community": 5, @@ -6187,7 +6217,7 @@ "label": "get_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1607", + "source_location": "L1677", "_origin": "ast", "id": "app_api_pl_plan_get_delivery_slip_template", "community": 5, @@ -6197,7 +6227,7 @@ "label": "save_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1618", + "source_location": "L1688", "_origin": "ast", "id": "app_api_pl_plan_save_delivery_slip_template", "community": 5, @@ -6207,7 +6237,7 @@ "label": "get_subpack_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1641", + "source_location": "L1711", "_origin": "ast", "id": "app_api_pl_plan_get_subpack_slip_template", "community": 5, @@ -6217,7 +6247,7 @@ "label": "save_subpack_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1652", + "source_location": "L1722", "_origin": "ast", "id": "app_api_pl_plan_save_subpack_slip_template", "community": 5, @@ -6227,7 +6257,7 @@ "label": "delete_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", - "source_location": "L1689", + "source_location": "L1759", "_origin": "ast", "id": "app_api_pl_plan_delete_plan", "community": 5, @@ -6237,9 +6267,9 @@ "label": "\u5217\u8868\u5c55\u793a\u7528\uff1a\u4f18\u5148 CRM \u6807\u51c6\u540d\uff08\u8be6\u60c5\u4ecd\u8fd4\u56de\u5e93\u5185 product_name\uff0c\u4ee5\u4fbf\u7f16\u8f91\u53cd\u63a8\u522b\u540d\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L108", + "source_location": "L112", "_origin": "ast", - "id": "app_api_pl_plan_rationale_108", + "id": "app_api_pl_plan_rationale_112", "community": 5, "norm_label": "\u5217\u8868\u5c55\u793a\u7528:\u4f18\u5148 crm \u6807\u51c6\u540d(\u8be6\u60c5\u4ecd\u8fd4\u56de\u5e93\u5185 product_name,\u4ee5\u4fbf\u7f16\u8f91\u53cd\u63a8\u522b\u540d)\u3002" }, @@ -6247,9 +6277,9 @@ "label": "\u751f\u6210\u8ba1\u5212\u7f16\u53f7 POYYYYMMDD###\uff08\u5f53\u65e5 3 \u4f4d\u5e8f\u53f7\uff0c\u6bcf\u65e5\u91cd\u7f6e\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L123", + "source_location": "L127", "_origin": "ast", - "id": "app_api_pl_plan_rationale_123", + "id": "app_api_pl_plan_rationale_127", "community": 5, "norm_label": "\u751f\u6210\u8ba1\u5212\u7f16\u53f7 poyyyymmdd###(\u5f53\u65e5 3 \u4f4d\u5e8f\u53f7,\u6bcf\u65e5\u91cd\u7f6e)" }, @@ -6257,9 +6287,9 @@ "label": "\u5c06\u5386\u53f2\u5206\u88c5\u5355\u53f7\u7edf\u4e00\u4e3a NO:SXFZYYYYMMDD-###", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L159", + "source_location": "L163", "_origin": "ast", - "id": "app_api_pl_plan_rationale_159", + "id": "app_api_pl_plan_rationale_163", "community": 5, "norm_label": "\u5c06\u5386\u53f2\u5206\u88c5\u5355\u53f7\u7edf\u4e00\u4e3a no:sxfzyyyymmdd-###" }, @@ -6267,9 +6297,9 @@ "label": "\u5206\u914d\u5206\u88c5\u5355\u53f7 NO:SXFZYYYYMMDD-###\uff08\u6309\u79df\u6237\u6bcf\u65e5\u9012\u589e\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L192", + "source_location": "L196", "_origin": "ast", - "id": "app_api_pl_plan_rationale_192", + "id": "app_api_pl_plan_rationale_196", "community": 5, "norm_label": "\u5206\u914d\u5206\u88c5\u5355\u53f7 no:sxfzyyyymmdd-###(\u6309\u79df\u6237\u6bcf\u65e5\u9012\u589e)" }, @@ -6277,9 +6307,9 @@ "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u4f9b\u65b9/\u9700\u65b9 + \u4ea7\u54c1\u5e93\u4ea7\u54c1 + \u53ef\u9009\u9884\u9009\u8f66\u8f86\uff0c\u4e0d\u81ea\u52a8\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L606", + "source_location": "L676", "_origin": "ast", - "id": "app_api_pl_plan_rationale_606", + "id": "app_api_pl_plan_rationale_676", "community": 5, "norm_label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212(\u5b8c\u6574\u8868\u5355:\u4f9b\u65b9/\u9700\u65b9 + \u4ea7\u54c1\u5e93\u4ea7\u54c1 + \u53ef\u9009\u9884\u9009\u8f66\u8f86,\u4e0d\u81ea\u52a8\u5b89\u6392\u8fd0\u8f93)" }, @@ -6287,9 +6317,9 @@ "label": "\u66f4\u65b0\u8ba1\u5212\u5371\u5316\u54c1\u4ea7\u54c1\u8bc1\u4e66\uff08\u8d2d\u4e70\u8bc1/\u8fd0\u8f93\u8bc1/\u5408\u6cd5\u4f7f\u7528\u8bc1\u660e\uff0c\u4e0d\u89e6\u53d1\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L1108", + "source_location": "L1178", "_origin": "ast", - "id": "app_api_pl_plan_rationale_1108", + "id": "app_api_pl_plan_rationale_1178", "community": 5, "norm_label": "\u66f4\u65b0\u8ba1\u5212\u5371\u5316\u54c1\u4ea7\u54c1\u8bc1\u4e66(\u8d2d\u4e70\u8bc1/\u8fd0\u8f93\u8bc1/\u5408\u6cd5\u4f7f\u7528\u8bc1\u660e,\u4e0d\u89e6\u53d1\u5b89\u6392\u8fd0\u8f93)" }, @@ -6297,9 +6327,9 @@ "label": "\u83b7\u53d6\u8ba1\u5212\u5df2\u5b89\u6392\u8fd0\u8f93\u540e\u7684\u53f8\u673a\u94fe\u63a5\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054\uff08\u4f9b\u67e5\u770b\u5f39\u7a97\u590d\u5236\u7b80\u8ff0/\u4e8c\u7ef4\u7801\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L1176", + "source_location": "L1246", "_origin": "ast", - "id": "app_api_pl_plan_rationale_1176", + "id": "app_api_pl_plan_rationale_1246", "community": 173, "norm_label": "\u83b7\u53d6\u8ba1\u5212\u5df2\u5b89\u6392\u8fd0\u8f93\u540e\u7684\u53f8\u673a\u94fe\u63a5\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054(\u4f9b\u67e5\u770b\u5f39\u7a97\u590d\u5236\u7b80\u8ff0/\u4e8c\u7ef4\u7801)\u3002" }, @@ -6307,9 +6337,9 @@ "label": "\u4f5c\u5e9f\u8fd0\u8f93\u8ba1\u5212\uff1a\u53d6\u6d88\u8ddf\u8fdb\u72b6\u6001\u3001\u4f5c\u5e9f\u5173\u8054\u5730\u78c5\u51fa\u5165\u5e93\u5355\u3001\u53d6\u6d88\u8fd0\u8f93\u5355\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", - "source_location": "L1370", + "source_location": "L1440", "_origin": "ast", - "id": "app_api_pl_plan_rationale_1370", + "id": "app_api_pl_plan_rationale_1440", "community": 5, "norm_label": "\u4f5c\u5e9f\u8fd0\u8f93\u8ba1\u5212:\u53d6\u6d88\u8ddf\u8fdb\u72b6\u6001\u3001\u4f5c\u5e9f\u5173\u8054\u5730\u78c5\u51fa\u5165\u5e93\u5355\u3001\u53d6\u6d88\u8fd0\u8f93\u5355\u3002" }, @@ -6320,7 +6350,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_public_io_order", - "community": 45, + "community": 145, "norm_label": "public_io_order.py" }, { @@ -6330,7 +6360,7 @@ "source_location": "L31", "_origin": "ast", "id": "app_api_pl_public_io_order_models", - "community": 45, + "community": 145, "norm_label": "_models()" }, { @@ -6340,7 +6370,7 @@ "source_location": "L37", "_origin": "ast", "id": "app_api_pl_public_io_order_get_by_token", - "community": 45, + "community": 145, "norm_label": "_get_by_token()" }, { @@ -6350,7 +6380,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_public_io_order_py_session", - "community": 45, + "community": 145, "norm_label": "session" }, { @@ -6360,7 +6390,7 @@ "source_location": "L55", "_origin": "ast", "id": "app_api_pl_public_io_order_resolve_io_order_link_flags", - "community": 174, + "community": 79, "norm_label": "_resolve_io_order_link_flags()" }, { @@ -6370,7 +6400,7 @@ "source_location": "L62", "_origin": "ast", "id": "app_api_pl_public_io_order_build_page", - "community": 45, + "community": 145, "norm_label": "_build_page()" }, { @@ -6380,7 +6410,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_api_pl_public_io_order_format_file_size", - "community": 45, + "community": 145, "norm_label": "_format_file_size()" }, { @@ -6390,7 +6420,7 @@ "source_location": "L82", "_origin": "ast", "id": "app_api_pl_public_io_order_make_handlers", - "community": 45, + "community": 145, "norm_label": "_make_handlers()" }, { @@ -6400,7 +6430,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_public_io_order_rationale_1", - "community": 45, + "community": 145, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u5165\u5e93/\u51fa\u5e93\u5355\u73b0\u573a\u514d\u767b\u5f55\u516c\u5171 api" }, { @@ -6410,7 +6440,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_api_pl_public_io_order_rationale_56", - "community": 174, + "community": 79, "norm_label": "\u8fd4\u56de (\u4f5c\u5e9f, \u5f52\u6863)\u3002\u73b0\u573a\u94fe\u63a5\u5b9e\u9645\u8d70\u5165\u5e93/\u51fa\u5e93\u5355\u516c\u5171\u9875\u3002" }, { @@ -6420,7 +6450,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_public_site", - "community": 174, + "community": 79, "norm_label": "public_site.py" }, { @@ -6430,7 +6460,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_api_pl_public_site_parse_feedback_images", - "community": 174, + "community": 79, "norm_label": "_parse_feedback_images()" }, { @@ -6440,7 +6470,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_api_pl_public_site_get_site_link_by_token", - "community": 174, + "community": 79, "norm_label": "_get_site_link_by_token()" }, { @@ -6450,7 +6480,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_public_site_py_session", - "community": 174, + "community": 79, "norm_label": "session" }, { @@ -6460,7 +6490,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_api_pl_public_site_resolve_site_link_flags", - "community": 174, + "community": 79, "norm_label": "_resolve_site_link_flags()" }, { @@ -6470,7 +6500,7 @@ "source_location": "L66", "_origin": "ast", "id": "app_api_pl_public_site_resolve_unit_label", - "community": 174, + "community": 79, "norm_label": "_resolve_unit_label()" }, { @@ -6480,7 +6510,7 @@ "source_location": "L73", "_origin": "ast", "id": "app_api_pl_public_site_resolve_plan_product", - "community": 174, + "community": 79, "norm_label": "_resolve_plan_product()" }, { @@ -6490,7 +6520,7 @@ "source_location": "L86", "_origin": "ast", "id": "app_api_pl_public_site_build_site_product_read", - "community": 174, + "community": 79, "norm_label": "_build_site_product_read()" }, { @@ -6500,7 +6530,7 @@ "source_location": "L145", "_origin": "ast", "id": "app_api_pl_public_site_build_public_page", - "community": 174, + "community": 79, "norm_label": "_build_public_page()" }, { @@ -6510,7 +6540,7 @@ "source_location": "L187", "_origin": "ast", "id": "app_api_pl_public_site_get_public_site", - "community": 174, + "community": 79, "norm_label": "get_public_site()" }, { @@ -6520,7 +6550,7 @@ "source_location": "L194", "_origin": "ast", "id": "app_api_pl_public_site_save_public_site_feedback", - "community": 174, + "community": 79, "norm_label": "save_public_site_feedback()" }, { @@ -6530,7 +6560,7 @@ "source_location": "L217", "_origin": "ast", "id": "app_api_pl_public_site_format_file_size", - "community": 174, + "community": 79, "norm_label": "_format_file_size()" }, { @@ -6540,7 +6570,7 @@ "source_location": "L226", "_origin": "ast", "id": "app_api_pl_public_site_upload_public_site_attachment", - "community": 174, + "community": 79, "norm_label": "upload_public_site_attachment()" }, { @@ -6550,7 +6580,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_public_site_py_uploadfile", - "community": 174, + "community": 79, "norm_label": "uploadfile" }, { @@ -6560,7 +6590,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_public_site_rationale_1", - "community": 174, + "community": 79, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u5de5\u5382\u73b0\u573a\u4eba\u5458\u514d\u767b\u5f55\u516c\u5171 api(pl_transport_site_link)" }, { @@ -6570,7 +6600,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_public_transport", - "community": 174, + "community": 79, "norm_label": "public_transport.py" }, { @@ -6580,7 +6610,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_api_pl_public_transport_resolve_unit_label", - "community": 174, + "community": 79, "norm_label": "_resolve_unit_label()" }, { @@ -6590,7 +6620,7 @@ "source_location": "L54", "_origin": "ast", "id": "app_api_pl_public_transport_get_transport_by_token", - "community": 174, + "community": 79, "norm_label": "_get_transport_by_token()" }, { @@ -6600,7 +6630,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_public_transport_py_session", - "community": 174, + "community": 79, "norm_label": "session" }, { @@ -6610,7 +6640,7 @@ "source_location": "L68", "_origin": "ast", "id": "app_api_pl_public_transport_parse_feedback_images", - "community": 174, + "community": 79, "norm_label": "_parse_feedback_images()" }, { @@ -6620,7 +6650,7 @@ "source_location": "L80", "_origin": "ast", "id": "app_api_pl_public_transport_format_plan_date", - "community": 174, + "community": 79, "norm_label": "_format_plan_date()" }, { @@ -6630,7 +6660,7 @@ "source_location": "L90", "_origin": "ast", "id": "app_api_pl_public_transport_resolve_driver_link_flags", - "community": 174, + "community": 79, "norm_label": "_resolve_driver_link_flags()" }, { @@ -6640,7 +6670,7 @@ "source_location": "L102", "_origin": "ast", "id": "app_api_pl_public_transport_resolve_other_personnel", - "community": 174, + "community": 79, "norm_label": "_resolve_other_personnel()" }, { @@ -6650,7 +6680,7 @@ "source_location": "L131", "_origin": "ast", "id": "app_api_pl_public_transport_build_public_page", - "community": 174, + "community": 79, "norm_label": "_build_public_page()" }, { @@ -6660,7 +6690,7 @@ "source_location": "L288", "_origin": "ast", "id": "app_api_pl_public_transport_get_public_transport", - "community": 174, + "community": 79, "norm_label": "get_public_transport()" }, { @@ -6670,7 +6700,7 @@ "source_location": "L295", "_origin": "ast", "id": "app_api_pl_public_transport_save_public_feedback", - "community": 174, + "community": 79, "norm_label": "save_public_feedback()" }, { @@ -6680,7 +6710,7 @@ "source_location": "L353", "_origin": "ast", "id": "app_api_pl_public_transport_format_file_size", - "community": 174, + "community": 79, "norm_label": "_format_file_size()" }, { @@ -6690,7 +6720,7 @@ "source_location": "L362", "_origin": "ast", "id": "app_api_pl_public_transport_upload_public_attachment", - "community": 174, + "community": 79, "norm_label": "upload_public_attachment()" }, { @@ -6700,7 +6730,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_public_transport_py_uploadfile", - "community": 174, + "community": 79, "norm_label": "uploadfile" }, { @@ -6800,7 +6830,7 @@ "source_location": "L250", "_origin": "ast", "id": "app_api_pl_transport_is_rearrange", - "community": 145, + "community": 173, "norm_label": "_is_rearrange()" }, { @@ -6980,7 +7010,7 @@ "source_location": "L251", "_origin": "ast", "id": "app_api_pl_transport_rationale_251", - "community": 145, + "community": 173, "norm_label": "\u4ec5\u8ba1\u5212\u5df2\u6b63\u5f0f\u5b89\u6392\u624d\u7b97\u300c\u8c03\u6574\u8fd0\u8f93\u300d\u3002 \u521b\u5efa/\u7f16\u8f91\u8868\u5355\u9884\u9009\u8f66\u8f86\u4f1a\u7559\u4e0b draft \u8fd0\u8f93\u5355,\u8ba1\u5212\u4ecd\u4e3a pending; \u82e5\u628a\u975e cancelled" }, { @@ -6990,7 +7020,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_transport_address", - "community": 58, + "community": 51, "norm_label": "transport_address.py" }, { @@ -7000,7 +7030,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_api_pl_transport_address_address_to_read", - "community": 58, + "community": 51, "norm_label": "_address_to_read()" }, { @@ -7010,7 +7040,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_api_pl_transport_address_get_address", - "community": 58, + "community": 51, "norm_label": "_get_address()" }, { @@ -7020,7 +7050,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_transport_address_py_session", - "community": 58, + "community": 51, "norm_label": "session" }, { @@ -7030,7 +7060,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_api_pl_transport_address_build_address_query", - "community": 58, + "community": 51, "norm_label": "_build_address_query()" }, { @@ -7040,7 +7070,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_api_pl_transport_address_list_transport_addresses", - "community": 58, + "community": 51, "norm_label": "list_transport_addresses()" }, { @@ -7050,7 +7080,7 @@ "source_location": "L96", "_origin": "ast", "id": "app_api_pl_transport_address_list_all_transport_addresses", - "community": 58, + "community": 51, "norm_label": "list_all_transport_addresses()" }, { @@ -7060,7 +7090,7 @@ "source_location": "L123", "_origin": "ast", "id": "app_api_pl_transport_address_create_transport_address", - "community": 58, + "community": 51, "norm_label": "create_transport_address()" }, { @@ -7070,7 +7100,7 @@ "source_location": "L150", "_origin": "ast", "id": "app_api_pl_transport_address_get_transport_address", - "community": 58, + "community": 51, "norm_label": "get_transport_address()" }, { @@ -7080,7 +7110,7 @@ "source_location": "L161", "_origin": "ast", "id": "app_api_pl_transport_address_update_transport_address", - "community": 58, + "community": 51, "norm_label": "update_transport_address()" }, { @@ -7090,7 +7120,7 @@ "source_location": "L182", "_origin": "ast", "id": "app_api_pl_transport_address_delete_transport_address", - "community": 58, + "community": 51, "norm_label": "delete_transport_address()" }, { @@ -7410,7 +7440,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_pl_vehicle_urea", - "community": 51, + "community": 11, "norm_label": "vehicle_urea.py" }, { @@ -7420,7 +7450,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_api_pl_vehicle_urea_list_applies", - "community": 51, + "community": 11, "norm_label": "list_applies()" }, { @@ -7430,7 +7460,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_vehicle_urea_py_date", - "community": 51, + "community": 11, "norm_label": "date" }, { @@ -7440,7 +7470,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_pl_vehicle_urea_py_session", - "community": 51, + "community": 11, "norm_label": "session" }, { @@ -7450,7 +7480,7 @@ "source_location": "L58", "_origin": "ast", "id": "app_api_pl_vehicle_urea_get_apply", - "community": 51, + "community": 11, "norm_label": "get_apply()" }, { @@ -7460,7 +7490,7 @@ "source_location": "L68", "_origin": "ast", "id": "app_api_pl_vehicle_urea_create_apply", - "community": 51, + "community": 11, "norm_label": "create_apply()" }, { @@ -7470,7 +7500,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_api_pl_vehicle_urea_update_apply", - "community": 51, + "community": 11, "norm_label": "update_apply()" }, { @@ -7480,7 +7510,7 @@ "source_location": "L89", "_origin": "ast", "id": "app_api_pl_vehicle_urea_cancel_apply", - "community": 51, + "community": 11, "norm_label": "cancel_apply()" }, { @@ -7490,7 +7520,7 @@ "source_location": "L99", "_origin": "ast", "id": "app_api_pl_vehicle_urea_delete_applies", - "community": 51, + "community": 11, "norm_label": "delete_applies()" }, { @@ -7500,7 +7530,7 @@ "source_location": "L110", "_origin": "ast", "id": "app_api_pl_vehicle_urea_list_disburse_board", - "community": 51, + "community": 11, "norm_label": "list_disburse_board()" }, { @@ -7510,7 +7540,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_api_pl_vehicle_urea_get_disburse", - "community": 51, + "community": 11, "norm_label": "get_disburse()" }, { @@ -7520,7 +7550,7 @@ "source_location": "L152", "_origin": "ast", "id": "app_api_pl_vehicle_urea_create_disburse", - "community": 51, + "community": 11, "norm_label": "create_disburse()" }, { @@ -7530,7 +7560,7 @@ "source_location": "L162", "_origin": "ast", "id": "app_api_pl_vehicle_urea_update_disburse", - "community": 51, + "community": 11, "norm_label": "update_disburse()" }, { @@ -7540,7 +7570,7 @@ "source_location": "L173", "_origin": "ast", "id": "app_api_pl_vehicle_urea_delete_disburses", - "community": 51, + "community": 11, "norm_label": "delete_disburses()" }, { @@ -7560,7 +7590,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_api_public_avatar_url_field", - "community": 90, + "community": 164, "norm_label": "_avatar_url_field()" }, { @@ -7570,7 +7600,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_api_public_web_role_list", - "community": 90, + "community": 164, "norm_label": "_web_role_list()" }, { @@ -7580,7 +7610,7 @@ "source_location": "L53", "_origin": "ast", "id": "app_api_public_build_user_info_payload", - "community": 90, + "community": 164, "norm_label": "_build_user_info_payload()" }, { @@ -7620,7 +7650,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_public_py_request", - "community": 75, + "community": 117, "norm_label": "request" }, { @@ -7630,7 +7660,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_public_py_session", - "community": 75, + "community": 117, "norm_label": "session" }, { @@ -7660,7 +7690,7 @@ "source_location": "L228", "_origin": "ast", "id": "app_api_public_get_current_user_profile", - "community": 75, + "community": 117, "norm_label": "get_current_user_profile()" }, { @@ -7680,7 +7710,7 @@ "source_location": "L312", "_origin": "ast", "id": "app_api_public_change_current_user_password", - "community": 75, + "community": 117, "norm_label": "change_current_user_password()" }, { @@ -7690,7 +7720,7 @@ "source_location": "L345", "_origin": "ast", "id": "app_api_public_public_quote_share", - "community": 75, + "community": 117, "norm_label": "public_quote_share()" }, { @@ -7710,7 +7740,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_api_public_rationale_48", - "community": 90, + "community": 164, "norm_label": "\u4e0e web-admin \u9759\u6001\u8def\u7531 meta.roles(admin/super_admin)\u5bf9\u9f50\u7684\u5355\u5143\u7d20\u6570\u7ec4\u3002" }, { @@ -7720,7 +7750,7 @@ "source_location": "L54", "_origin": "ast", "id": "app_api_public_rationale_54", - "community": 90, + "community": 164, "norm_label": "\u4e0e web-admin `userinfo` \u5b57\u6bb5\u7ea6\u5b9a\u4e00\u81f4\u3002" }, { @@ -7760,7 +7790,7 @@ "source_location": "L229", "_origin": "ast", "id": "app_api_public_rationale_229", - "community": 75, + "community": 117, "norm_label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237\u4fe1\u606f(\u4e0e sys_user \u5b57\u6bb5\u5bf9\u5e94)\u3002" }, { @@ -7780,7 +7810,7 @@ "source_location": "L351", "_origin": "ast", "id": "app_api_public_rationale_351", - "community": 75, + "community": 117, "norm_label": "\u516c\u5f00\u5206\u4eab\u67e5\u770b\u62a5\u4ef7\u5355 \u2014 java: get /share/{sharecode}(\u65e0 jwt)" }, { @@ -7790,7 +7820,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_api_public_duty", - "community": 26, + "community": 3, "norm_label": "public_duty.py" }, { @@ -7800,7 +7830,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_api_public_duty_public_page", - "community": 26, + "community": 3, "norm_label": "public_page()" }, { @@ -7810,7 +7840,7 @@ "source_location": "", "_origin": "ast", "id": "app_api_public_duty_py_session", - "community": 26, + "community": 3, "norm_label": "session" }, { @@ -7820,7 +7850,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_api_public_duty_public_grab", - "community": 26, + "community": 3, "norm_label": "public_grab()" }, { @@ -7920,7 +7950,7 @@ "source_location": "L120", "_origin": "ast", "id": "app_api_workflow_processdefcreatebody", - "community": 107, + "community": 141, "norm_label": "processdefcreatebody" }, { @@ -7930,7 +7960,7 @@ "source_location": "L130", "_origin": "ast", "id": "app_api_workflow_processdefupdatebody", - "community": 107, + "community": 141, "norm_label": "processdefupdatebody" }, { @@ -7940,7 +7970,7 @@ "source_location": "L140", "_origin": "ast", "id": "app_api_workflow_publishversionbody", - "community": 107, + "community": 141, "norm_label": "publishversionbody" }, { @@ -7950,7 +7980,7 @@ "source_location": "L149", "_origin": "ast", "id": "app_api_workflow_startinstancebody", - "community": 107, + "community": 141, "norm_label": "startinstancebody" }, { @@ -8130,7 +8160,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_init", - "community": 110, + "community": 38, "norm_label": "__init__.py" }, { @@ -8430,7 +8460,7 @@ "source_location": "L141", "_origin": "ast", "id": "app_core_api_crypto_middleware_apicryptomiddleware", - "community": 220, + "community": 120, "norm_label": "apicryptomiddleware" }, { @@ -8440,7 +8470,7 @@ "source_location": "", "_origin": "ast", "id": "basehttpmiddleware", - "community": 220, + "community": 120, "norm_label": "basehttpmiddleware" }, { @@ -8480,7 +8510,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_api_request_log_middleware", - "community": 33, + "community": 88, "norm_label": "api_request_log_middleware.py" }, { @@ -8490,7 +8520,7 @@ "source_location": "L37", "_origin": "ast", "id": "app_core_api_request_log_middleware_truncate", - "community": 33, + "community": 88, "norm_label": "_truncate()" }, { @@ -8500,7 +8530,7 @@ "source_location": "L49", "_origin": "ast", "id": "app_core_api_request_log_middleware_truncate_utf8_bytes", - "community": 33, + "community": 88, "norm_label": "_truncate_utf8_bytes()" }, { @@ -8510,7 +8540,7 @@ "source_location": "L65", "_origin": "ast", "id": "app_core_api_request_log_middleware_redact_obj", - "community": 33, + "community": 88, "norm_label": "_redact_obj()" }, { @@ -8520,7 +8550,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_api_request_log_middleware_py_any", - "community": 33, + "community": 88, "norm_label": "any" }, { @@ -8530,7 +8560,7 @@ "source_location": "L84", "_origin": "ast", "id": "app_core_api_request_log_middleware_format_body_bytes", - "community": 33, + "community": 88, "norm_label": "_format_body_bytes()" }, { @@ -8540,7 +8570,7 @@ "source_location": "L111", "_origin": "ast", "id": "app_core_api_request_log_middleware_claims_from_auth", - "community": 33, + "community": 88, "norm_label": "_claims_from_auth()" }, { @@ -8550,7 +8580,7 @@ "source_location": "L137", "_origin": "ast", "id": "app_core_api_request_log_middleware_should_skip_exclude", - "community": 33, + "community": 88, "norm_label": "_should_skip_exclude()" }, { @@ -8560,7 +8590,7 @@ "source_location": "L150", "_origin": "ast", "id": "app_core_api_request_log_middleware_should_skip", - "community": 33, + "community": 88, "norm_label": "_should_skip()" }, { @@ -8570,7 +8600,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_api_request_log_middleware_py_request", - "community": 33, + "community": 88, "norm_label": "request" }, { @@ -8580,7 +8610,7 @@ "source_location": "L163", "_origin": "ast", "id": "app_core_api_request_log_middleware_persist_log", - "community": 33, + "community": 88, "norm_label": "_persist_log()" }, { @@ -8590,7 +8620,7 @@ "source_location": "L224", "_origin": "ast", "id": "app_core_api_request_log_middleware_schedule_persist_log", - "community": 33, + "community": 88, "norm_label": "_schedule_persist_log()" }, { @@ -8600,7 +8630,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_core_api_request_log_middleware_apirequestlogmiddleware", - "community": 33, + "community": 120, "norm_label": "apirequestlogmiddleware" }, { @@ -8610,7 +8640,7 @@ "source_location": "L248", "_origin": "ast", "id": "app_core_api_request_log_middleware_apirequestlogmiddleware_dispatch", - "community": 33, + "community": 88, "norm_label": ".dispatch()" }, { @@ -8620,7 +8650,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_api_request_log_middleware_rationale_1", - "community": 33, + "community": 88, "norm_label": "\u7edf\u4e00\u8bb0\u5f55 api \u8bf7\u6c42/\u54cd\u5e94\u51fa\u5165\u53c2\u7684\u4e2d\u95f4\u4ef6" }, { @@ -8630,7 +8660,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_attachment_biz", - "community": 174, + "community": 79, "norm_label": "attachment_biz.py" }, { @@ -8640,7 +8670,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_core_attachment_biz_resolve_upload_folder", - "community": 174, + "community": 79, "norm_label": "resolve_upload_folder()" }, { @@ -8650,7 +8680,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_attachment_biz_rationale_1", - "community": 174, + "community": 79, "norm_label": "\u9644\u4ef6\u4e0a\u4f20 biztype \u4e0e minio \u76ee\u5f55\u6620\u5c04(\u5bf9\u9f50\u539f crm oss \u4e0a\u4f20\u8bed\u4e49)" }, { @@ -8660,7 +8690,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_core_attachment_biz_rationale_22", - "community": 174, + "community": 79, "norm_label": "\u4f18\u5148\u4f7f\u7528\u663e\u5f0f folder;\u5426\u5219\u6309 biztype \u6620\u5c04\u9ed8\u8ba4\u76ee\u5f55\u3002" }, { @@ -8820,7 +8850,7 @@ "source_location": "L148", "_origin": "ast", "id": "app_core_auth_get_current_user_by_token", - "community": 75, + "community": 117, "norm_label": "get_current_user_by_token()" }, { @@ -8830,7 +8860,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_auth_py_session", - "community": 75, + "community": 117, "norm_label": "session" }, { @@ -8840,7 +8870,7 @@ "source_location": "L206", "_origin": "ast", "id": "app_core_auth_get_current_user", - "community": 75, + "community": 117, "norm_label": "get_current_user()" }, { @@ -8910,7 +8940,7 @@ "source_location": "L149", "_origin": "ast", "id": "app_core_auth_rationale_149", - "community": 75, + "community": 117, "norm_label": "\u6839\u636e token \u83b7\u53d6\u5f53\u524d\u7528\u6237(\u5305\u542b redis \u4f1a\u8bdd\u6821\u9a8c;\u4f1a\u8bdd\u6ed1\u52a8\u7eed\u671f)" }, { @@ -8920,7 +8950,7 @@ "source_location": "L210", "_origin": "ast", "id": "app_core_auth_rationale_210", - "community": 75, + "community": 117, "norm_label": "\u83b7\u53d6\u5f53\u524d\u7528\u6237(sync \u4f9d\u8d56,\u914d\u5408 sync \u8def\u7531\u5728\u7ebf\u7a0b\u6c60\u6267\u884c,\u907f\u514d\u963b\u585e\u4e8b\u4ef6\u5faa\u73af)\u3002" }, { @@ -8930,7 +8960,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_bx_auth", - "community": 66, + "community": 14, "norm_label": "bx_auth.py" }, { @@ -8940,7 +8970,7 @@ "source_location": "L13", "_origin": "ast", "id": "app_core_bx_auth_bxusercontext", - "community": 43, + "community": 15, "norm_label": "bxusercontext" }, { @@ -8950,7 +8980,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_core_bx_auth_bxusercontext_to_tenant_user_dict", - "community": 43, + "community": 112, "norm_label": ".to_tenant_user_dict()" }, { @@ -8960,7 +8990,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_bx_auth_py_any", - "community": 43, + "community": 112, "norm_label": "any" }, { @@ -8970,7 +9000,7 @@ "source_location": "L30", "_origin": "ast", "id": "app_core_bx_auth_bxusercontext_to_user_info", - "community": 43, + "community": 112, "norm_label": ".to_user_info()" }, { @@ -8980,7 +9010,7 @@ "source_location": "L41", "_origin": "ast", "id": "app_core_bx_auth_get_bx_current_user", - "community": 66, + "community": 43, "norm_label": "get_bx_current_user()" }, { @@ -8990,7 +9020,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_bx_auth_rationale_1", - "community": 66, + "community": 14, "norm_label": "\u62a5\u9500\u6a21\u5757\u8ba4\u8bc1\u9002\u914d:\u95e8\u6237 jwt \u7528\u6237 \u2192 bx \u4e1a\u52a1\u4e0a\u4e0b\u6587\u3002" }, { @@ -9000,7 +9030,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_core_bx_auth_rationale_14", - "community": 43, + "community": 15, "norm_label": "bx service/router \u4f7f\u7528\u7684\u5f53\u524d\u7528\u6237\u4e0a\u4e0b\u6587(sys_user.id \u4e3a uuid \u5b57\u7b26\u4e32)\u3002" }, { @@ -9010,7 +9040,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_core_bx_auth_rationale_23", - "community": 43, + "community": 112, "norm_label": "\u4f9b get_tenant_no \u7b49\u95e8\u6237\u5de5\u5177\u4f7f\u7528\u3002" }, { @@ -9020,7 +9050,7 @@ "source_location": "L31", "_origin": "ast", "id": "app_core_bx_auth_rationale_31", - "community": 43, + "community": 112, "norm_label": "\u4e0e\u95e8\u6237 jwt / apply_data_scope \u6240\u9700\u7684 user_info \u5b57\u6bb5\u5bf9\u9f50\u3002" }, { @@ -9030,7 +9060,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_config", - "community": 110, + "community": 38, "norm_label": "config.py" }, { @@ -9060,7 +9090,7 @@ "source_location": "L185", "_origin": "ast", "id": "app_core_config_config", - "community": 110, + "community": 38, "norm_label": "config" }, { @@ -9130,7 +9160,7 @@ "source_location": "L62", "_origin": "ast", "id": "app_core_data_scope_resolve_user_role_scopes", - "community": 69, + "community": 71, "norm_label": "_resolve_user_role_scopes()" }, { @@ -9220,7 +9250,7 @@ "source_location": "L65", "_origin": "ast", "id": "app_core_data_scope_rationale_65", - "community": 69, + "community": 71, "norm_label": "\u83b7\u53d6\u7528\u6237\u6240\u6709\u89d2\u8272\u7684\u6570\u636e\u6743\u9650\u914d\u7f6e\u3002 \u8fd4\u56de: [{\"data_scope\": str, \"details\": [sysroledatascopedetai" }, { @@ -9260,7 +9290,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_database", - "community": 13, + "community": 51, "norm_label": "database.py" }, { @@ -9270,7 +9300,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_core_database_get_db", - "community": 13, + "community": 51, "norm_label": "get_db()" }, { @@ -9280,7 +9310,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_core_database_auto_fill_create_dept_id", - "community": 13, + "community": 51, "norm_label": "_auto_fill_create_dept_id()" }, { @@ -9290,7 +9320,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_core_database_rationale_39", - "community": 13, + "community": 51, "norm_label": "orm before_insert \u94a9\u5b50:\u5f53 create_dept_id \u4e3a\u7a7a\u65f6,\u81ea\u52a8\u4ece\u8bf7\u6c42\u4e0a\u4e0b\u6587\u586b\u5145\u5f53\u524d\u7528\u6237\u90e8\u95e8 id" }, { @@ -9310,7 +9340,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_core_db_auth_dbusercontext", - "community": 51, + "community": 16, "norm_label": "dbusercontext" }, { @@ -9320,7 +9350,7 @@ "source_location": "L31", "_origin": "ast", "id": "app_core_db_auth_dbusercontext_to_tenant_user_dict", - "community": 51, + "community": 16, "norm_label": ".to_tenant_user_dict()" }, { @@ -9330,7 +9360,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_db_auth_py_any", - "community": 51, + "community": 16, "norm_label": "any" }, { @@ -9340,7 +9370,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_core_db_auth_dbusercontext_to_user_info", - "community": 51, + "community": 16, "norm_label": ".to_user_info()" }, { @@ -9390,7 +9420,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_core_db_auth_rationale_23", - "community": 51, + "community": 16, "norm_label": "db router/service \u4f7f\u7528\u7684\u5f53\u524d\u7528\u6237\u4e0a\u4e0b\u6587\u3002" }, { @@ -9400,7 +9430,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_core_db_auth_rationale_39", - "community": 51, + "community": 16, "norm_label": "\u4e0e\u95e8\u6237 jwt / apply_data_scope \u6240\u9700\u7684 user_info \u5b57\u6bb5\u5bf9\u9f50\u3002" }, { @@ -9520,7 +9550,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_core_delete_guard_user_info_from_context", - "community": 25, + "community": 115, "norm_label": "user_info_from_context()" }, { @@ -9840,7 +9870,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_id_card", - "community": 109, + "community": 82, "norm_label": "id_card.py" }, { @@ -9850,7 +9880,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_core_id_card_calc_age_from_chinese_id_card", - "community": 109, + "community": 82, "norm_label": "calc_age_from_chinese_id_card()" }, { @@ -9860,7 +9890,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_id_card_py_date", - "community": 109, + "community": 82, "norm_label": "date" }, { @@ -9870,7 +9900,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_core_id_card_rationale_16", - "community": 109, + "community": 82, "norm_label": "\u4ece 18 \u4f4d\u8eab\u4efd\u8bc1\u53f7\u8ba1\u7b97\u5468\u5c81\u3002\u53f7\u7801\u4e0d\u5b8c\u6574\u6216\u51fa\u751f\u65e5\u671f\u65e0\u6548\u65f6\u8fd4\u56de none\u3002" }, { @@ -9880,7 +9910,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_login_crypto", - "community": 110, + "community": 38, "norm_label": "login_crypto.py" }, { @@ -9890,7 +9920,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_core_login_crypto_ensure_initialized", - "community": 110, + "community": 38, "norm_label": "ensure_initialized()" }, { @@ -9900,7 +9930,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_core_login_crypto_get_public_pem", - "community": 110, + "community": 38, "norm_label": "get_public_pem()" }, { @@ -9910,7 +9940,7 @@ "source_location": "L62", "_origin": "ast", "id": "app_core_login_crypto_decrypt_login_payload", - "community": 110, + "community": 38, "norm_label": "decrypt_login_payload()" }, { @@ -9920,7 +9950,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_login_crypto_py_any", - "community": 110, + "community": 38, "norm_label": "any" }, { @@ -9930,7 +9960,7 @@ "source_location": "L71", "_origin": "ast", "id": "app_core_login_crypto_validate_ts", - "community": 110, + "community": 38, "norm_label": "_validate_ts()" }, { @@ -9940,7 +9970,7 @@ "source_location": "L83", "_origin": "ast", "id": "app_core_login_crypto_extract_login_credentials", - "community": 110, + "community": 38, "norm_label": "extract_login_credentials()" }, { @@ -9950,7 +9980,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_login_crypto_rationale_1", - "community": 110, + "community": 38, "norm_label": "\u767b\u5f55\u51ed\u636e rsa \u89e3\u5bc6(\u4e0e\u524d\u7aef jsencrypt pkcs#1 v1.5 \u517c\u5bb9)\u3002" }, { @@ -9960,7 +9990,7 @@ "source_location": "L63", "_origin": "ast", "id": "app_core_login_crypto_rationale_63", - "community": 110, + "community": 38, "norm_label": "base64 \u5bc6\u6587 -> json \u5bf9\u8c61(\u987b\u542b username\u3001password\u3001ts \u6beb\u79d2\u65f6\u95f4\u6233)\u3002" }, { @@ -9970,7 +10000,7 @@ "source_location": "L84", "_origin": "ast", "id": "app_core_login_crypto_rationale_84", - "community": 110, + "community": 38, "norm_label": "\u4ece\u8bf7\u6c42\u4f53\u89e3\u6790\u7528\u6237\u540d\u3001\u5bc6\u7801\u3002 \u8fd4\u56de (username, password, error_message);error_message \u975e\u7a7a\u65f6\u8868\u793a\u5931\u8d25\u3002" }, { @@ -9980,7 +10010,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_menu_guard", - "community": 13, + "community": 159, "norm_label": "menu_guard.py" }, { @@ -9990,7 +10020,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_core_menu_guard_require_admin_or_super_admin", - "community": 1, + "community": 121, "norm_label": "require_admin_or_super_admin()" }, { @@ -10020,7 +10050,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_core_menu_guard_require_menu_code", - "community": 27, + "community": 1, "norm_label": "require_menu_code()" }, { @@ -10030,7 +10060,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_menu_guard_rationale_1", - "community": 13, + "community": 159, "norm_label": "\u83dc\u5355 code \u6743\u9650\u5b88\u536b(v0.3:\u901a\u8fc7 sys_user_role \u2192 sys_role_menu \u2192 sys_menu.perms)" }, { @@ -10040,7 +10070,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_core_menu_guard_rationale_16", - "community": 1, + "community": 121, "norm_label": "\u8fd0\u8425\u7aef\u89d2\u8272\u5b88\u536b:admin / super_admin \u53ef\u8bbf\u95ee\u3002" }, { @@ -10060,7 +10090,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_core_menu_guard_rationale_29", - "community": 27, + "community": 1, "norm_label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\u3002super_admin \u76f4\u63a5\u653e\u884c\u3002" }, { @@ -10110,7 +10140,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_core_oper_log_context_clear_oper_log_meta", - "community": 33, + "community": 88, "norm_label": "clear_oper_log_meta()" }, { @@ -10270,7 +10300,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_oper_log_infer", - "community": 33, + "community": 88, "norm_label": "oper_log_infer.py" }, { @@ -10280,7 +10310,7 @@ "source_location": "L42", "_origin": "ast", "id": "app_core_oper_log_infer_title_from_path", - "community": 33, + "community": 88, "norm_label": "title_from_path()" }, { @@ -10290,7 +10320,7 @@ "source_location": "L50", "_origin": "ast", "id": "app_core_oper_log_infer_business_type_from_path", - "community": 33, + "community": 88, "norm_label": "business_type_from_path()" }, { @@ -10380,7 +10410,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_redis_client", - "community": 82, + "community": 75, "norm_label": "redis_client.py" }, { @@ -10390,7 +10420,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_core_redis_client_redis_enabled", - "community": 82, + "community": 75, "norm_label": "redis_enabled()" }, { @@ -10400,7 +10430,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_core_redis_client_redis_common_kwargs", - "community": 82, + "community": 75, "norm_label": "_redis_common_kwargs()" }, { @@ -10410,7 +10440,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_core_redis_client_get_sync_redis_client", - "community": 82, + "community": 75, "norm_label": "get_sync_redis_client()" }, { @@ -10420,7 +10450,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_redis_client_py_redis", - "community": 82, + "community": 75, "norm_label": "redis" }, { @@ -10430,7 +10460,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_core_redis_client_get_redis_client", - "community": 82, + "community": 75, "norm_label": "get_redis_client()" }, { @@ -10440,7 +10470,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_redis_client_rationale_1", - "community": 82, + "community": 75, "norm_label": "\u5171\u4eab redis \u5ba2\u6237\u7aef(\u540c\u6b65:\u4f1a\u8bdd\u9274\u6743;\u5f02\u6b65:api \u52a0\u5bc6 nonce)\u3002" }, { @@ -10450,7 +10480,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_core_redis_client_rationale_33", - "community": 82, + "community": 75, "norm_label": "\u540c\u6b65 redis(auth \u4f1a\u8bdd\u7b49,\u5728\u7ebf\u7a0b\u6c60\u4e2d\u8c03\u7528)\u3002" }, { @@ -10460,7 +10490,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_core_redis_client_rationale_46", - "community": 82, + "community": 75, "norm_label": "\u5f02\u6b65 redis(api \u52a0\u5bc6 nonce \u7b49\u4e2d\u95f4\u4ef6)\u3002" }, { @@ -10510,7 +10540,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_response", - "community": 160, + "community": 121, "norm_label": "response.py" }, { @@ -10520,7 +10550,7 @@ "source_location": "L8", "_origin": "ast", "id": "app_core_response_responsemodel", - "community": 160, + "community": 121, "norm_label": "responsemodel" }, { @@ -10530,7 +10560,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_core_response_config", - "community": 160, + "community": 121, "norm_label": "config" }, { @@ -10540,7 +10570,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_core_response_pageresult", - "community": 160, + "community": 121, "norm_label": "pageresult" }, { @@ -10550,7 +10580,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_core_response_success_response", - "community": 7, + "community": 3, "norm_label": "success_response()" }, { @@ -10560,7 +10590,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_response_py_any", - "community": 7, + "community": 3, "norm_label": "any" }, { @@ -10570,7 +10600,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_core_response_format_api_error_message", - "community": 160, + "community": 121, "norm_label": "format_api_error_message()" }, { @@ -10580,7 +10610,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_response_py_exception", - "community": 160, + "community": 121, "norm_label": "exception" }, { @@ -10590,7 +10620,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_core_response_error_response", - "community": 7, + "community": 3, "norm_label": "error_response()" }, { @@ -10600,7 +10630,7 @@ "source_location": "L40", "_origin": "ast", "id": "app_core_response_rationale_40", - "community": 160, + "community": 121, "norm_label": "\u5c06 http/sqlalchemy \u7b49\u5f02\u5e38\u8f6c\u4e3a\u53ef\u5c55\u793a\u7684\u9519\u8bef\u6587\u6848(\u907f\u514d str([]) \u7a7a\u5217\u8868)\u3002" }, { @@ -10650,7 +10680,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_storage", - "community": 23, + "community": 93, "norm_label": "storage.py" }, { @@ -10670,7 +10700,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_core_storage_convert_heic_to_jpeg", - "community": 23, + "community": 93, "norm_label": "convert_heic_to_jpeg()" }, { @@ -10680,7 +10710,7 @@ "source_location": "L76", "_origin": "ast", "id": "app_core_storage_process_image_content", - "community": 23, + "community": 93, "norm_label": "process_image_content()" }, { @@ -10760,7 +10790,7 @@ "source_location": "L115", "_origin": "ast", "id": "app_core_storage_localstorage", - "community": 98, + "community": 23, "norm_label": "localstorage" }, { @@ -10770,7 +10800,7 @@ "source_location": "L118", "_origin": "ast", "id": "app_core_storage_localstorage_init", - "community": 98, + "community": 23, "norm_label": ".__init__()" }, { @@ -10780,7 +10810,7 @@ "source_location": "L122", "_origin": "ast", "id": "app_core_storage_localstorage_ensure_dir", - "community": 98, + "community": 23, "norm_label": "._ensure_dir()" }, { @@ -10790,7 +10820,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_storage_py_path", - "community": 98, + "community": 23, "norm_label": "path" }, { @@ -10800,7 +10830,7 @@ "source_location": "L128", "_origin": "ast", "id": "app_core_storage_localstorage_generate_filename", - "community": 98, + "community": 23, "norm_label": "._generate_filename()" }, { @@ -10810,7 +10840,7 @@ "source_location": "L134", "_origin": "ast", "id": "app_core_storage_localstorage_upload_file", - "community": 98, + "community": 23, "norm_label": ".upload_file()" }, { @@ -10820,7 +10850,7 @@ "source_location": "L149", "_origin": "ast", "id": "app_core_storage_localstorage_upload_base64", - "community": 23, + "community": 93, "norm_label": ".upload_base64()" }, { @@ -10830,7 +10860,7 @@ "source_location": "L158", "_origin": "ast", "id": "app_core_storage_localstorage_delete_file", - "community": 98, + "community": 23, "norm_label": ".delete_file()" }, { @@ -10840,7 +10870,7 @@ "source_location": "L175", "_origin": "ast", "id": "app_core_storage_localstorage_get_url", - "community": 98, + "community": 23, "norm_label": ".get_url()" }, { @@ -10850,7 +10880,7 @@ "source_location": "L180", "_origin": "ast", "id": "app_core_storage_qiniustorage", - "community": 23, + "community": 93, "norm_label": "qiniustorage" }, { @@ -10860,7 +10890,7 @@ "source_location": "L183", "_origin": "ast", "id": "app_core_storage_qiniustorage_init", - "community": 23, + "community": 93, "norm_label": ".__init__()" }, { @@ -10870,7 +10900,7 @@ "source_location": "L192", "_origin": "ast", "id": "app_core_storage_qiniustorage_generate_filename", - "community": 23, + "community": 93, "norm_label": "._generate_filename()" }, { @@ -10880,7 +10910,7 @@ "source_location": "L198", "_origin": "ast", "id": "app_core_storage_qiniustorage_upload_file", - "community": 23, + "community": 93, "norm_label": ".upload_file()" }, { @@ -10890,7 +10920,7 @@ "source_location": "L213", "_origin": "ast", "id": "app_core_storage_qiniustorage_upload_base64", - "community": 23, + "community": 93, "norm_label": ".upload_base64()" }, { @@ -10900,7 +10930,7 @@ "source_location": "L221", "_origin": "ast", "id": "app_core_storage_qiniustorage_delete_file", - "community": 23, + "community": 93, "norm_label": ".delete_file()" }, { @@ -10910,7 +10940,7 @@ "source_location": "L232", "_origin": "ast", "id": "app_core_storage_qiniustorage_get_url", - "community": 23, + "community": 93, "norm_label": ".get_url()" }, { @@ -10920,7 +10950,7 @@ "source_location": "L237", "_origin": "ast", "id": "app_core_storage_ossstorage", - "community": 23, + "community": 93, "norm_label": "ossstorage" }, { @@ -10930,7 +10960,7 @@ "source_location": "L240", "_origin": "ast", "id": "app_core_storage_ossstorage_init", - "community": 23, + "community": 93, "norm_label": ".__init__()" }, { @@ -10940,7 +10970,7 @@ "source_location": "L250", "_origin": "ast", "id": "app_core_storage_ossstorage_generate_filename", - "community": 23, + "community": 93, "norm_label": "._generate_filename()" }, { @@ -10950,7 +10980,7 @@ "source_location": "L256", "_origin": "ast", "id": "app_core_storage_ossstorage_upload_file", - "community": 23, + "community": 93, "norm_label": ".upload_file()" }, { @@ -10960,7 +10990,7 @@ "source_location": "L267", "_origin": "ast", "id": "app_core_storage_ossstorage_upload_base64", - "community": 23, + "community": 93, "norm_label": ".upload_base64()" }, { @@ -10970,7 +11000,7 @@ "source_location": "L275", "_origin": "ast", "id": "app_core_storage_ossstorage_delete_file", - "community": 23, + "community": 93, "norm_label": ".delete_file()" }, { @@ -10980,7 +11010,7 @@ "source_location": "L284", "_origin": "ast", "id": "app_core_storage_ossstorage_get_url", - "community": 23, + "community": 93, "norm_label": ".get_url()" }, { @@ -11030,7 +11060,7 @@ "source_location": "L334", "_origin": "ast", "id": "app_core_storage_miniostorage_generate_filename", - "community": 23, + "community": 93, "norm_label": "._generate_filename()" }, { @@ -11040,7 +11070,7 @@ "source_location": "L340", "_origin": "ast", "id": "app_core_storage_miniostorage_upload_file", - "community": 23, + "community": 93, "norm_label": ".upload_file()" }, { @@ -11050,7 +11080,7 @@ "source_location": "L357", "_origin": "ast", "id": "app_core_storage_miniostorage_upload_base64", - "community": 23, + "community": 93, "norm_label": ".upload_base64()" }, { @@ -11120,7 +11150,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_storage_rationale_1", - "community": 23, + "community": 93, "norm_label": "\u6587\u4ef6\u5b58\u50a8\u5de5\u5177\u6a21\u5757 \u652f\u6301\u591a\u79cd\u5b58\u50a8\u65b9\u5f0f: 1. \u672c\u5730\u5b58\u50a8 (local) - \u9ed8\u8ba4 2. \u4e03\u725b\u4e91\u5b58\u50a8 (qiniu) - \u63a8\u8350\u751f\u4ea7\u73af\u5883\u4f7f\u7528 3. \u963f\u91cc\u4e91oss (" }, { @@ -11140,7 +11170,7 @@ "source_location": "L62", "_origin": "ast", "id": "app_core_storage_rationale_62", - "community": 23, + "community": 93, "norm_label": "\u5c06 heic/heif \u683c\u5f0f\u8f6c\u6362\u4e3a jpeg \u683c\u5f0f" }, { @@ -11150,7 +11180,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_core_storage_rationale_77", - "community": 23, + "community": 93, "norm_label": "\u5904\u7406\u56fe\u7247\u5185\u5bb9,\u5982\u679c\u662f heic \u683c\u5f0f\u5219\u8f6c\u6362\u4e3a jpeg" }, { @@ -11210,7 +11240,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_tenant_context", - "community": 66, + "community": 65, "norm_label": "tenant_context.py" }, { @@ -11250,7 +11280,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_utils", - "community": 88, + "community": 85, "norm_label": "utils.py" }, { @@ -11260,7 +11290,7 @@ "source_location": "L9", "_origin": "ast", "id": "app_core_utils_generate_uuid", - "community": 109, + "community": 15, "norm_label": "generate_uuid()" }, { @@ -11270,7 +11300,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_core_utils_generate_id", - "community": 26, + "community": 88, "norm_label": "generate_id()" }, { @@ -11280,7 +11310,7 @@ "source_location": "L20", "_origin": "ast", "id": "app_core_utils_generate_random_password", - "community": 88, + "community": 85, "norm_label": "generate_random_password()" }, { @@ -11290,7 +11320,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_core_utils_get_current_time", - "community": 88, + "community": 85, "norm_label": "get_current_time()" }, { @@ -11300,7 +11330,7 @@ "source_location": "", "_origin": "ast", "id": "app_core_utils_py_datetime", - "community": 88, + "community": 85, "norm_label": "datetime" }, { @@ -11320,7 +11350,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_core_utils_parse_datetime", - "community": 88, + "community": 85, "norm_label": "parse_datetime()" }, { @@ -11330,7 +11360,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_core_utils_get_file_size_display", - "community": 88, + "community": 85, "norm_label": "get_file_size_display()" }, { @@ -11340,7 +11370,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_wechat_message", - "community": 105, + "community": 90, "norm_label": "wechat_message.py" }, { @@ -11350,7 +11380,7 @@ "source_location": "L37", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice", - "community": 105, + "community": 90, "norm_label": "wechatmessageservice" }, { @@ -11360,7 +11390,7 @@ "source_location": "L49", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_init", - "community": 105, + "community": 90, "norm_label": ".__init__()" }, { @@ -11370,7 +11400,7 @@ "source_location": "L55", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_get_access_token", - "community": 105, + "community": 90, "norm_label": "._get_access_token()" }, { @@ -11380,7 +11410,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_template_message", - "community": 105, + "community": 90, "norm_label": "._send_template_message()" }, { @@ -11390,7 +11420,7 @@ "source_location": "L135", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_order_status", - "community": 105, + "community": 90, "norm_label": ".send_order_status()" }, { @@ -11400,7 +11430,7 @@ "source_location": "L172", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_payment_success", - "community": 105, + "community": 90, "norm_label": ".send_payment_success()" }, { @@ -11410,7 +11440,7 @@ "source_location": "L207", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_delivery_notice", - "community": 105, + "community": 90, "norm_label": ".send_delivery_notice()" }, { @@ -11420,7 +11450,7 @@ "source_location": "L244", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_delivery_warning", - "community": 105, + "community": 90, "norm_label": ".send_delivery_warning()" }, { @@ -11430,7 +11460,7 @@ "source_location": "L281", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_refund_result", - "community": 105, + "community": 90, "norm_label": ".send_refund_result()" }, { @@ -11440,7 +11470,7 @@ "source_location": "L318", "_origin": "ast", "id": "app_core_wechat_message_wechatmessageservice_send_urge_notification", - "community": 105, + "community": 90, "norm_label": ".send_urge_notification()" }, { @@ -11450,7 +11480,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_core_wechat_message_rationale_1", - "community": 105, + "community": 90, "norm_label": "\u5fae\u4fe1\u6d88\u606f\u901a\u77e5\u670d\u52a1 \u652f\u6301\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u6a21\u677f\u6d88\u606f\u63a8\u9001 \u4f7f\u7528\u65b9\u5f0f: from app.core.wechat_message import wechatmes" }, { @@ -11460,7 +11490,7 @@ "source_location": "L86", "_origin": "ast", "id": "app_core_wechat_message_rationale_86", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u6a21\u677f\u6d88\u606f args: openid: \u7528\u6237openid template_" }, { @@ -11470,7 +11500,7 @@ "source_location": "L143", "_origin": "ast", "id": "app_core_wechat_message_rationale_143", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u8ba2\u5355\u72b6\u6001\u901a\u77e5 args: openid: \u7528\u6237openid order_n" }, { @@ -11480,7 +11510,7 @@ "source_location": "L179", "_origin": "ast", "id": "app_core_wechat_message_rationale_179", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u652f\u4ed8\u6210\u529f\u901a\u77e5 args: openid: \u7528\u6237openid order_n" }, { @@ -11490,7 +11520,7 @@ "source_location": "L215", "_origin": "ast", "id": "app_core_wechat_message_rationale_215", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u914d\u9001\u901a\u77e5 args: openid: \u914d\u9001\u5458openid task_no:" }, { @@ -11500,7 +11530,7 @@ "source_location": "L251", "_origin": "ast", "id": "app_core_wechat_message_rationale_251", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u914d\u9001\u65f6\u6548\u9884\u8b66 args: openid: \u914d\u9001\u5458openid task_n" }, { @@ -11510,7 +11540,7 @@ "source_location": "L289", "_origin": "ast", "id": "app_core_wechat_message_rationale_289", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u9000\u6b3e\u7ed3\u679c\u901a\u77e5 args: openid: \u7528\u6237openid order_n" }, { @@ -11520,7 +11550,7 @@ "source_location": "L325", "_origin": "ast", "id": "app_core_wechat_message_rationale_325", - "community": 105, + "community": 90, "norm_label": "\u53d1\u9001\u50ac\u5355\u901a\u77e5\u7ed9\u914d\u9001\u5458 args: deliver_openid: \u914d\u9001\u5458openid" }, { @@ -11850,7 +11880,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_init", - "community": 125, + "community": 86, "norm_label": "__init__.py" }, { @@ -11860,7 +11890,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_api_request_log", - "community": 33, + "community": 110, "norm_label": "api_request_log.py" }, { @@ -11870,7 +11900,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_crud_api_request_log_apirequestlogcrud", - "community": 33, + "community": 110, "norm_label": "apirequestlogcrud" }, { @@ -11880,7 +11910,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_crud_api_request_log_apirequestlogcrud_get_multi_with_filters", - "community": 33, + "community": 110, "norm_label": ".get_multi_with_filters()" }, { @@ -11890,7 +11920,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_api_request_log_py_session", - "community": 33, + "community": 110, "norm_label": "session" }, { @@ -11900,7 +11930,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_crud_api_request_log_apirequestlogcrud_get", - "community": 33, + "community": 110, "norm_label": ".get()" }, { @@ -11910,7 +11940,7 @@ "source_location": "L91", "_origin": "ast", "id": "app_crud_api_request_log_apirequestlogcrud_delete", - "community": 33, + "community": 110, "norm_label": ".delete()" }, { @@ -11920,7 +11950,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_base", - "community": 125, + "community": 86, "norm_label": "base.py" }, { @@ -11930,7 +11960,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_crud_base_camel_to_snake", - "community": 125, + "community": 86, "norm_label": "camel_to_snake()" }, { @@ -11940,7 +11970,7 @@ "source_location": "L20", "_origin": "ast", "id": "app_crud_base_get_model_attr", - "community": 125, + "community": 86, "norm_label": "get_model_attr()" }, { @@ -11950,7 +11980,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_crud_base_crudbase", - "community": 125, + "community": 86, "norm_label": "crudbase" }, { @@ -11960,7 +11990,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_crud_base_crudbase_init", - "community": 125, + "community": 86, "norm_label": ".__init__()" }, { @@ -11970,7 +12000,7 @@ "source_location": "", "_origin": "ast", "id": "modeltype", - "community": 125, + "community": 86, "norm_label": "modeltype" }, { @@ -11980,7 +12010,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_crud_base_crudbase_get", - "community": 125, + "community": 86, "norm_label": ".get()" }, { @@ -11990,7 +12020,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_base_py_session", - "community": 125, + "community": 86, "norm_label": "session" }, { @@ -12000,7 +12030,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_crud_base_crudbase_get_multi", - "community": 125, + "community": 86, "norm_label": ".get_multi()" }, { @@ -12010,7 +12040,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_base_py_any", - "community": 125, + "community": 86, "norm_label": "any" }, { @@ -12020,7 +12050,7 @@ "source_location": "L67", "_origin": "ast", "id": "app_crud_base_crudbase_get_all", - "community": 125, + "community": 86, "norm_label": ".get_all()" }, { @@ -12030,7 +12060,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_crud_base_crudbase_create", - "community": 125, + "community": 86, "norm_label": ".create()" }, { @@ -12040,7 +12070,7 @@ "source_location": "L95", "_origin": "ast", "id": "app_crud_base_crudbase_update", - "community": 125, + "community": 86, "norm_label": ".update()" }, { @@ -12050,7 +12080,7 @@ "source_location": "L114", "_origin": "ast", "id": "app_crud_base_crudbase_delete", - "community": 125, + "community": 86, "norm_label": ".delete()" }, { @@ -12060,7 +12090,7 @@ "source_location": "L126", "_origin": "ast", "id": "app_crud_base_crudbase_hard_delete", - "community": 125, + "community": 86, "norm_label": ".hard_delete()" }, { @@ -12070,7 +12100,7 @@ "source_location": "L135", "_origin": "ast", "id": "app_crud_base_crudbase_count", - "community": 125, + "community": 86, "norm_label": ".count()" }, { @@ -12080,7 +12110,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_crud_base_crudbase_exists", - "community": 125, + "community": 86, "norm_label": ".exists()" }, { @@ -12090,7 +12120,7 @@ "source_location": "L150", "_origin": "ast", "id": "app_crud_base_historycrud", - "community": 125, + "community": 86, "norm_label": "historycrud" }, { @@ -12100,7 +12130,7 @@ "source_location": "L153", "_origin": "ast", "id": "app_crud_base_historycrud_create_history", - "community": 125, + "community": 86, "norm_label": ".create_history()" }, { @@ -12330,7 +12360,7 @@ "source_location": "L148", "_origin": "ast", "id": "app_crud_crm_clue_list_clues", - "community": 7, + "community": 39, "norm_label": "list_clues()" }, { @@ -12490,7 +12520,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_clue_follow", - "community": 39, + "community": 32, "norm_label": "clue_follow.py" }, { @@ -12500,7 +12530,7 @@ "source_location": "L18", "_origin": "ast", "id": "app_crud_crm_clue_follow_total_pages", - "community": 39, + "community": 32, "norm_label": "total_pages()" }, { @@ -12510,7 +12540,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_crud_crm_clue_follow_row_to_dict", - "community": 39, + "community": 32, "norm_label": "_row_to_dict()" }, { @@ -12520,7 +12550,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_clue_follow_py_any", - "community": 39, + "community": 32, "norm_label": "any" }, { @@ -12530,7 +12560,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_crud_crm_clue_follow_create_clue_follow", - "community": 39, + "community": 32, "norm_label": "create_clue_follow()" }, { @@ -12540,7 +12570,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_clue_follow_py_session", - "community": 39, + "community": 32, "norm_label": "session" }, { @@ -12550,7 +12580,7 @@ "source_location": "L100", "_origin": "ast", "id": "app_crud_crm_clue_follow_update_clue_follow", - "community": 39, + "community": 32, "norm_label": "update_clue_follow()" }, { @@ -12560,7 +12590,7 @@ "source_location": "L146", "_origin": "ast", "id": "app_crud_crm_clue_follow_list_clue_follows", - "community": 39, + "community": 32, "norm_label": "list_clue_follows()" }, { @@ -12570,7 +12600,7 @@ "source_location": "L179", "_origin": "ast", "id": "app_crud_crm_clue_follow_get_clue_follow", - "community": 39, + "community": 32, "norm_label": "get_clue_follow()" }, { @@ -12580,7 +12610,7 @@ "source_location": "L200", "_origin": "ast", "id": "app_crud_crm_clue_follow_delete_clue_follow", - "community": 39, + "community": 32, "norm_label": "delete_clue_follow()" }, { @@ -12590,7 +12620,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_crud_crm_clue_follow_get_follow_statistics", - "community": 39, + "community": 32, "norm_label": "get_follow_statistics()" }, { @@ -12600,7 +12630,7 @@ "source_location": "L54", "_origin": "ast", "id": "app_crud_crm_clue_follow_rationale_54", - "community": 39, + "community": 32, "norm_label": "\u521b\u5efa\u7ebf\u7d22\u8ddf\u8fdb\u8bb0\u5f55,\u5e76\u7ea7\u8054\u66f4\u65b0\u7236\u7ebf\u7d22\u7684\u8ddf\u8fdb\u76f8\u5173\u5b57\u6bb5" }, { @@ -12610,7 +12640,7 @@ "source_location": "L108", "_origin": "ast", "id": "app_crud_crm_clue_follow_rationale_108", - "community": 39, + "community": 32, "norm_label": "\u66f4\u65b0\u7ebf\u7d22\u8ddf\u8fdb\u8bb0\u5f55,\u5fc5\u8981\u65f6\u540c\u6b65\u7ebf\u7d22 next_time" }, { @@ -12620,7 +12650,7 @@ "source_location": "L206", "_origin": "ast", "id": "app_crud_crm_clue_follow_rationale_206", - "community": 39, + "community": 32, "norm_label": "\u8f6f\u5220\u9664\u8ddf\u8fdb\u8bb0\u5f55,\u5e76\u56de\u5199\u7ebf\u7d22 follow_count / last_time" }, { @@ -12870,7 +12900,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_contract", - "community": 29, + "community": 40, "norm_label": "contract.py" }, { @@ -12880,7 +12910,7 @@ "source_location": "L53", "_origin": "ast", "id": "app_crud_crm_contract_ensure_contract_in_scope", - "community": 29, + "community": 50, "norm_label": "_ensure_contract_in_scope()" }, { @@ -12890,7 +12920,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_contract_py_session", - "community": 20, + "community": 50, "norm_label": "session" }, { @@ -12900,7 +12930,7 @@ "source_location": "L57", "_origin": "ast", "id": "app_crud_crm_contract_get_contract_row_in_scope", - "community": 20, + "community": 50, "norm_label": "_get_contract_row_in_scope()" }, { @@ -13110,7 +13140,7 @@ "source_location": "L580", "_origin": "ast", "id": "app_crud_crm_contract_get_contract_detail", - "community": 20, + "community": 50, "norm_label": "get_contract_detail()" }, { @@ -13120,7 +13150,7 @@ "source_location": "L600", "_origin": "ast", "id": "app_crud_crm_contract_get_contract_row", - "community": 29, + "community": 50, "norm_label": "get_contract_row()" }, { @@ -13350,7 +13380,7 @@ "source_location": "L1438", "_origin": "ast", "id": "app_crud_crm_contract_soft_delete_contracts", - "community": 20, + "community": 50, "norm_label": "soft_delete_contracts()" }, { @@ -13360,7 +13390,7 @@ "source_location": "L1462", "_origin": "ast", "id": "app_crud_crm_contract_validate_framework_contract_for_submit_approval", - "community": 29, + "community": 50, "norm_label": "validate_framework_contract_for_submit_approval()" }, { @@ -13370,7 +13400,7 @@ "source_location": "L1481", "_origin": "ast", "id": "app_crud_crm_contract_submit_contract_approval", - "community": 20, + "community": 50, "norm_label": "submit_contract_approval()" }, { @@ -13380,7 +13410,7 @@ "source_location": "L1526", "_origin": "ast", "id": "app_crud_crm_contract_batch_submit_contract_approval", - "community": 20, + "community": 50, "norm_label": "batch_submit_contract_approval()" }, { @@ -13390,7 +13420,7 @@ "source_location": "L1556", "_origin": "ast", "id": "app_crud_crm_contract_withdraw_contract_approval", - "community": 20, + "community": 50, "norm_label": "withdraw_contract_approval()" }, { @@ -13400,7 +13430,7 @@ "source_location": "L1583", "_origin": "ast", "id": "app_crud_crm_contract_start_execute", - "community": 20, + "community": 50, "norm_label": "start_execute()" }, { @@ -13410,7 +13440,7 @@ "source_location": "L1606", "_origin": "ast", "id": "app_crud_crm_contract_finish_contract", - "community": 20, + "community": 50, "norm_label": "finish_contract()" }, { @@ -13420,7 +13450,7 @@ "source_location": "L1629", "_origin": "ast", "id": "app_crud_crm_contract_invalid_contract", - "community": 20, + "community": 50, "norm_label": "invalid_contract()" }, { @@ -13430,7 +13460,7 @@ "source_location": "L1657", "_origin": "ast", "id": "app_crud_crm_contract_save_template", - "community": 20, + "community": 50, "norm_label": "save_template()" }, { @@ -13440,7 +13470,7 @@ "source_location": "L1685", "_origin": "ast", "id": "app_crud_crm_contract_get_template", - "community": 20, + "community": 50, "norm_label": "get_template()" }, { @@ -13450,7 +13480,7 @@ "source_location": "L1698", "_origin": "ast", "id": "app_crud_crm_contract_upload_file", - "community": 20, + "community": 50, "norm_label": "upload_file()" }, { @@ -13460,7 +13490,7 @@ "source_location": "L1715", "_origin": "ast", "id": "app_crud_crm_contract_upload_attachments", - "community": 20, + "community": 50, "norm_label": "upload_attachments()" }, { @@ -13470,7 +13500,7 @@ "source_location": "L1740", "_origin": "ast", "id": "app_crud_crm_contract_upload_attachments_with_category", - "community": 20, + "community": 50, "norm_label": "upload_attachments_with_category()" }, { @@ -13530,7 +13560,7 @@ "source_location": "L1960", "_origin": "ast", "id": "app_crud_crm_contract_query_expiring", - "community": 20, + "community": 29, "norm_label": "query_expiring()" }, { @@ -13540,7 +13570,7 @@ "source_location": "L1987", "_origin": "ast", "id": "app_crud_crm_contract_quote_products_to_contract_products", - "community": 20, + "community": 50, "norm_label": "_quote_products_to_contract_products()" }, { @@ -13550,7 +13580,7 @@ "source_location": "L2018", "_origin": "ast", "id": "app_crud_crm_contract_create_from_quote", - "community": 20, + "community": 50, "norm_label": "create_from_quote()" }, { @@ -13560,7 +13590,7 @@ "source_location": "L2081", "_origin": "ast", "id": "app_crud_crm_contract_renew_contract", - "community": 29, + "community": 50, "norm_label": "renew_contract()" }, { @@ -13570,7 +13600,7 @@ "source_location": "L2135", "_origin": "ast", "id": "app_crud_crm_contract_export_contracts", - "community": 20, + "community": 50, "norm_label": "export_contracts()" }, { @@ -13610,7 +13640,7 @@ "source_location": "L2227", "_origin": "ast", "id": "app_crud_crm_contract_template_row_to_dict", - "community": 29, + "community": 40, "norm_label": "_template_row_to_dict()" }, { @@ -13630,7 +13660,7 @@ "source_location": "L2285", "_origin": "ast", "id": "app_crud_crm_contract_get_contract_template_detail", - "community": 29, + "community": 40, "norm_label": "get_contract_template_detail()" }, { @@ -13640,7 +13670,7 @@ "source_location": "L2305", "_origin": "ast", "id": "app_crud_crm_contract_opportunity_products_to_contract_products", - "community": 20, + "community": 50, "norm_label": "_opportunity_products_to_contract_products()" }, { @@ -13650,7 +13680,7 @@ "source_location": "L2330", "_origin": "ast", "id": "app_crud_crm_contract_create_from_opportunity", - "community": 20, + "community": 50, "norm_label": "create_from_opportunity()" }, { @@ -13660,7 +13690,7 @@ "source_location": "L2383", "_origin": "ast", "id": "app_crud_crm_contract_sign_contract", - "community": 20, + "community": 50, "norm_label": "sign_contract()" }, { @@ -13670,7 +13700,7 @@ "source_location": "L2414", "_origin": "ast", "id": "app_crud_crm_contract_batch_assign_owner", - "community": 20, + "community": 50, "norm_label": "batch_assign_owner()" }, { @@ -13680,7 +13710,7 @@ "source_location": "L2448", "_origin": "ast", "id": "app_crud_crm_contract_download_contract_pdf", - "community": 20, + "community": 50, "norm_label": "download_contract_pdf()" }, { @@ -13690,7 +13720,7 @@ "source_location": "L2465", "_origin": "ast", "id": "app_crud_crm_contract_generate_template_no", - "community": 20, + "community": 50, "norm_label": "generate_template_no()" }, { @@ -13710,7 +13740,7 @@ "source_location": "L2509", "_origin": "ast", "id": "app_crud_crm_contract_enrich_change_rows", - "community": 29, + "community": 40, "norm_label": "_enrich_change_rows()" }, { @@ -13790,7 +13820,7 @@ "source_location": "L2703", "_origin": "ast", "id": "app_crud_crm_contract_create_contract_template", - "community": 29, + "community": 40, "norm_label": "create_contract_template()" }, { @@ -13840,7 +13870,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_contract_rationale_1", - "community": 29, + "community": 40, "norm_label": "crm \u5408\u540c crud \u2014 \u5bf9\u7167 crmcontractserviceimpl.java(\u5217\u8868/\u8be6\u60c5 p1)" }, { @@ -13950,7 +13980,7 @@ "source_location": "L1446", "_origin": "ast", "id": "app_crud_crm_contract_rationale_1446", - "community": 20, + "community": 50, "norm_label": "java: deletewithvalidbyids \u2014 \u8f6f\u5220\u9664" }, { @@ -13960,7 +13990,7 @@ "source_location": "L1469", "_origin": "ast", "id": "app_crud_crm_contract_rationale_1469", - "community": 29, + "community": 50, "norm_label": "\u6846\u67b6\u5408\u540c\u63d0\u4ea4\u5ba1\u6279\u6821\u9a8c:\u4ec5\u8981\u6c42\u6709\u4ea7\u54c1\u660e\u7ec6;\u8c03\u4ef7\u533a\u95f4\u4e3a\u53ef\u9009,\u4e0d\u5f3a\u5236\u3002" }, { @@ -13970,7 +14000,7 @@ "source_location": "L1537", "_origin": "ast", "id": "app_crud_crm_contract_rationale_1537", - "community": 20, + "community": 50, "norm_label": "java: batchsubmitapproval" }, { @@ -13980,7 +14010,7 @@ "source_location": "L1565", "_origin": "ast", "id": "app_crud_crm_contract_rationale_1565", - "community": 20, + "community": 50, "norm_label": "java: withdrawapproval" }, { @@ -13990,7 +14020,7 @@ "source_location": "L1748", "_origin": "ast", "id": "app_crud_crm_contract_rationale_1748", - "community": 20, + "community": 50, "norm_label": "\u6309\u5165\u53c2\u6574\u8868\u8986\u76d6\u5408\u540c\u626b\u63cf\u4ef6;attachments=[] \u8868\u793a\u6e05\u7a7a\u3002" }, { @@ -14000,7 +14030,7 @@ "source_location": "L2028", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2028", - "community": 20, + "community": 50, "norm_label": "java: createfromquote \u2014 \u8fd4\u56de\u5408\u540c id" }, { @@ -14010,7 +14040,7 @@ "source_location": "L2091", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2091", - "community": 29, + "community": 50, "norm_label": "java: renewcontract \u2014 \u57fa\u7840\u7eed\u7b7e" }, { @@ -14020,7 +14050,7 @@ "source_location": "L2142", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2142", - "community": 20, + "community": 50, "norm_label": "java: querylist for export" }, { @@ -14030,7 +14060,7 @@ "source_location": "L2340", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2340", - "community": 20, + "community": 50, "norm_label": "java: createfromopportunity \u2014 \u8fd4\u56de\u5408\u540c id" }, { @@ -14040,7 +14070,7 @@ "source_location": "L2424", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2424", - "community": 20, + "community": 50, "norm_label": "java: batchassignowner" }, { @@ -14050,7 +14080,7 @@ "source_location": "L2455", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2455", - "community": 20, + "community": 50, "norm_label": "java: downloadcontractpdf \u2014 \u8fd4\u56de\u5408\u540c\u6587\u4ef6 url/\u8def\u5f84" }, { @@ -14060,7 +14090,7 @@ "source_location": "L2466", "_origin": "ast", "id": "app_crud_crm_contract_rationale_2466", - "community": 20, + "community": 50, "norm_label": "java: generatetemplateno \u2014 tmpl{yyyymmdd}{4\u4f4d\u5e8f\u53f7}" }, { @@ -14210,7 +14240,7 @@ "source_location": "L198", "_origin": "ast", "id": "app_crud_crm_contract_approval_invalidate_all_approvals", - "community": 87, + "community": 83, "norm_label": "invalidate_all_approvals()" }, { @@ -14340,7 +14370,7 @@ "source_location": "L199", "_origin": "ast", "id": "app_crud_crm_contract_approval_rationale_199", - "community": 87, + "community": 83, "norm_label": "\u4f5c\u5e9f\u8be5\u5408\u540c\u5168\u90e8\u6709\u6548\u5ba1\u6279\u8bb0\u5f55(\u542b\u5df2\u901a\u8fc7/\u5df2\u62d2\u7edd),\u7528\u4e8e\u518d\u7f16\u8f91\u6216\u91cd\u65b0\u63d0\u5ba1\u3002" }, { @@ -14400,7 +14430,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting", - "community": 56, + "community": 92, "norm_label": "contract_approver_setting.py" }, { @@ -14410,7 +14440,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting_row_to_dict", - "community": 56, + "community": 92, "norm_label": "_row_to_dict()" }, { @@ -14420,7 +14450,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting_py_any", - "community": 56, + "community": 92, "norm_label": "any" }, { @@ -14430,7 +14460,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting_get_setting", - "community": 56, + "community": 92, "norm_label": "get_setting()" }, { @@ -14440,7 +14470,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting_py_session", - "community": 56, + "community": 92, "norm_label": "session" }, { @@ -14450,7 +14480,7 @@ "source_location": "L37", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting_assert_users_exist", - "community": 56, + "community": 92, "norm_label": "_assert_users_exist()" }, { @@ -14460,7 +14490,7 @@ "source_location": "L52", "_origin": "ast", "id": "app_crud_crm_contract_approver_setting_save_setting", - "community": 56, + "community": 92, "norm_label": "save_setting()" }, { @@ -14880,7 +14910,7 @@ "source_location": "L417", "_origin": "ast", "id": "app_crud_crm_customer_customer_name_exists", - "community": 6, + "community": 7, "norm_label": "customer_name_exists()" }, { @@ -15160,7 +15190,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_customer_pool", - "community": 171, + "community": 55, "norm_label": "customer_pool.py" }, { @@ -15170,7 +15200,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_crud_crm_customer_pool_total_pages", - "community": 171, + "community": 55, "norm_label": "total_pages()" }, { @@ -15180,7 +15210,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_crud_crm_customer_pool_row_to_dict", - "community": 171, + "community": 55, "norm_label": "_row_to_dict()" }, { @@ -15190,7 +15220,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_customer_pool_py_any", - "community": 171, + "community": 55, "norm_label": "any" }, { @@ -15210,7 +15240,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_customer_pool_py_session", - "community": 171, + "community": 55, "norm_label": "session" }, { @@ -15220,7 +15250,7 @@ "source_location": "L82", "_origin": "ast", "id": "app_crud_crm_customer_pool_list_pool_records", - "community": 171, + "community": 55, "norm_label": "list_pool_records()" }, { @@ -15230,7 +15260,7 @@ "source_location": "L119", "_origin": "ast", "id": "app_crud_crm_customer_pool_get_pool_record", - "community": 171, + "community": 55, "norm_label": "get_pool_record()" }, { @@ -15240,7 +15270,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers", - "community": 91, + "community": 72, "norm_label": "data_scope_helpers.py" }, { @@ -15280,7 +15310,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers_py_session", - "community": 91, + "community": 72, "norm_label": "session" }, { @@ -15300,7 +15330,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers_ensure_crm_owner_row_in_scope", - "community": 91, + "community": 72, "norm_label": "ensure_crm_owner_row_in_scope()" }, { @@ -15310,7 +15340,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers_ensure_crm_create_by_row_in_scope", - "community": 40, + "community": 32, "norm_label": "ensure_crm_create_by_row_in_scope()" }, { @@ -15330,7 +15360,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers_ensure_crm_customer_linked_row_in_scope", - "community": 91, + "community": 72, "norm_label": "ensure_crm_customer_linked_row_in_scope()" }, { @@ -15340,7 +15370,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers_rationale_1", - "community": 91, + "community": 72, "norm_label": "crm \u6570\u636e\u6743\u9650\u8f85\u52a9(\u8d1f\u8d23\u4eba owner_user_id + \u6807\u51c6 create_by/create_dept_id)\u3002" }, { @@ -15360,7 +15390,7 @@ "source_location": "L87", "_origin": "ast", "id": "app_crud_crm_data_scope_helpers_rationale_87", - "community": 91, + "community": 72, "norm_label": "\u5ba2\u6237\u5b50\u8868(\u5f00\u7968\u4fe1\u606f\u7b49):\u5148\u6821\u9a8c\u5173\u8054\u5ba2\u6237 owner scope,\u5426\u5219\u6821\u9a8c create_by\u3002" }, { @@ -15370,7 +15400,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_invoice_info", - "community": 91, + "community": 72, "norm_label": "invoice_info.py" }, { @@ -15380,7 +15410,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_crud_crm_invoice_info_row_to_dict", - "community": 91, + "community": 72, "norm_label": "_row_to_dict()" }, { @@ -15390,7 +15420,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_invoice_info_py_any", - "community": 91, + "community": 72, "norm_label": "any" }, { @@ -15400,7 +15430,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_crud_crm_invoice_info_list_invoice_info_by_customer", - "community": 91, + "community": 72, "norm_label": "list_invoice_info_by_customer()" }, { @@ -15410,7 +15440,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_invoice_info_py_session", - "community": 91, + "community": 72, "norm_label": "session" }, { @@ -15420,7 +15450,7 @@ "source_location": "L72", "_origin": "ast", "id": "app_crud_crm_invoice_info_get_invoice_info", - "community": 91, + "community": 72, "norm_label": "get_invoice_info()" }, { @@ -15430,7 +15460,7 @@ "source_location": "L83", "_origin": "ast", "id": "app_crud_crm_invoice_info_clear_default_for_customer", - "community": 91, + "community": 72, "norm_label": "_clear_default_for_customer()" }, { @@ -15440,7 +15470,7 @@ "source_location": "L100", "_origin": "ast", "id": "app_crud_crm_invoice_info_create_invoice_info", - "community": 91, + "community": 72, "norm_label": "create_invoice_info()" }, { @@ -15450,7 +15480,7 @@ "source_location": "L155", "_origin": "ast", "id": "app_crud_crm_invoice_info_update_invoice_info", - "community": 91, + "community": 72, "norm_label": "update_invoice_info()" }, { @@ -15460,7 +15490,7 @@ "source_location": "L207", "_origin": "ast", "id": "app_crud_crm_invoice_info_set_default_invoice_info", - "community": 91, + "community": 72, "norm_label": "set_default_invoice_info()" }, { @@ -15470,7 +15500,7 @@ "source_location": "L234", "_origin": "ast", "id": "app_crud_crm_invoice_info_soft_delete_invoice_info", - "community": 91, + "community": 72, "norm_label": "soft_delete_invoice_info()" }, { @@ -15900,7 +15930,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_opportunity_follow", - "community": 4, + "community": 32, "norm_label": "opportunity_follow.py" }, { @@ -15910,7 +15940,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_total_pages", - "community": 4, + "community": 32, "norm_label": "total_pages()" }, { @@ -15920,7 +15950,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_parse_optional_datetime", - "community": 4, + "community": 32, "norm_label": "_parse_optional_datetime()" }, { @@ -15930,7 +15960,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_py_any", - "community": 4, + "community": 32, "norm_label": "any" }, { @@ -15940,7 +15970,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_py_datetime", - "community": 4, + "community": 32, "norm_label": "datetime" }, { @@ -15950,7 +15980,7 @@ "source_location": "L42", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_row_to_dict", - "community": 4, + "community": 32, "norm_label": "_row_to_dict()" }, { @@ -15960,7 +15990,7 @@ "source_location": "L71", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_recalc_opportunity_follow_stats", - "community": 4, + "community": 32, "norm_label": "_recalc_opportunity_follow_stats()" }, { @@ -15970,7 +16000,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_py_session", - "community": 4, + "community": 32, "norm_label": "session" }, { @@ -15980,7 +16010,7 @@ "source_location": "L111", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_ensure_parent_opportunity", - "community": 4, + "community": 32, "norm_label": "_ensure_parent_opportunity()" }, { @@ -15990,7 +16020,7 @@ "source_location": "L129", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_list_opportunity_follows", - "community": 4, + "community": 32, "norm_label": "list_opportunity_follows()" }, { @@ -16000,7 +16030,7 @@ "source_location": "L159", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_list_follows_by_opportunity", - "community": 4, + "community": 32, "norm_label": "list_follows_by_opportunity()" }, { @@ -16010,7 +16040,7 @@ "source_location": "L176", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_get_opportunity_follow", - "community": 4, + "community": 32, "norm_label": "get_opportunity_follow()" }, { @@ -16020,7 +16050,7 @@ "source_location": "L197", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_create_opportunity_follow", - "community": 4, + "community": 32, "norm_label": "create_opportunity_follow()" }, { @@ -16030,7 +16060,7 @@ "source_location": "L243", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_update_opportunity_follow", - "community": 4, + "community": 32, "norm_label": "update_opportunity_follow()" }, { @@ -16040,7 +16070,7 @@ "source_location": "L287", "_origin": "ast", "id": "app_crud_crm_opportunity_follow_soft_delete_opportunity_follow", - "community": 4, + "community": 32, "norm_label": "soft_delete_opportunity_follow()" }, { @@ -16230,7 +16260,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_pool_rule", - "community": 171, + "community": 55, "norm_label": "pool_rule.py" }, { @@ -16240,7 +16270,7 @@ "source_location": "L25", "_origin": "ast", "id": "app_crud_crm_pool_rule_total_pages", - "community": 171, + "community": 55, "norm_label": "total_pages()" }, { @@ -16250,7 +16280,7 @@ "source_location": "L31", "_origin": "ast", "id": "app_crud_crm_pool_rule_row_to_dict", - "community": 171, + "community": 55, "norm_label": "_row_to_dict()" }, { @@ -16260,7 +16290,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_pool_rule_py_any", - "community": 171, + "community": 55, "norm_label": "any" }, { @@ -16270,7 +16300,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_crud_crm_pool_rule_list_pool_rules", - "community": 171, + "community": 55, "norm_label": "list_pool_rules()" }, { @@ -16280,7 +16310,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_pool_rule_py_session", - "community": 171, + "community": 55, "norm_label": "session" }, { @@ -16290,7 +16320,7 @@ "source_location": "L81", "_origin": "ast", "id": "app_crud_crm_pool_rule_get_pool_rule", - "community": 171, + "community": 55, "norm_label": "get_pool_rule()" }, { @@ -16300,7 +16330,7 @@ "source_location": "L93", "_origin": "ast", "id": "app_crud_crm_pool_rule_create_pool_rule", - "community": 171, + "community": 7, "norm_label": "create_pool_rule()" }, { @@ -16310,7 +16340,7 @@ "source_location": "L125", "_origin": "ast", "id": "app_crud_crm_pool_rule_update_pool_rule", - "community": 171, + "community": 55, "norm_label": "update_pool_rule()" }, { @@ -16320,7 +16350,7 @@ "source_location": "L165", "_origin": "ast", "id": "app_crud_crm_pool_rule_delete_pool_rules", - "community": 171, + "community": 55, "norm_label": "delete_pool_rules()" }, { @@ -16330,7 +16360,7 @@ "source_location": "L184", "_origin": "ast", "id": "app_crud_crm_pool_rule_update_pool_rule_status", - "community": 171, + "community": 55, "norm_label": "update_pool_rule_status()" }, { @@ -16340,7 +16370,7 @@ "source_location": "L204", "_origin": "ast", "id": "app_crud_crm_pool_rule_execute_pool_rules", - "community": 171, + "community": 55, "norm_label": "execute_pool_rules()" }, { @@ -16350,7 +16380,7 @@ "source_location": "L231", "_origin": "ast", "id": "app_crud_crm_pool_rule_execute_single_rule", - "community": 171, + "community": 55, "norm_label": "_execute_single_rule()" }, { @@ -16360,7 +16390,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_pool_rule_rationale_1", - "community": 171, + "community": 55, "norm_label": "crm \u516c\u6d77\u6c60\u89c4\u5219 crud + \u89c4\u5219\u6267\u884c\u903b\u8f91" }, { @@ -16740,7 +16770,7 @@ "source_location": "L644", "_origin": "ast", "id": "app_crud_crm_product_get_product", - "community": 104, + "community": 21, "norm_label": "get_product()" }, { @@ -16810,7 +16840,7 @@ "source_location": "L918", "_origin": "ast", "id": "app_crud_crm_product_soft_delete_product", - "community": 104, + "community": 21, "norm_label": "soft_delete_product()" }, { @@ -16840,7 +16870,7 @@ "source_location": "L965", "_origin": "ast", "id": "app_crud_crm_product_list_product_options", - "community": 101, + "community": 21, "norm_label": "list_product_options()" }, { @@ -16870,7 +16900,7 @@ "source_location": "L1052", "_origin": "ast", "id": "app_crud_crm_product_create_oss", - "community": 57, + "community": 21, "norm_label": "create_oss()" }, { @@ -17110,7 +17140,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_quote_py_any", - "community": 8, + "community": 96, "norm_label": "any" }, { @@ -17150,7 +17180,7 @@ "source_location": "L93", "_origin": "ast", "id": "app_crud_crm_quote_parse_optional_datetime", - "community": 8, + "community": 96, "norm_label": "_parse_optional_datetime()" }, { @@ -17160,7 +17190,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_quote_py_datetime", - "community": 8, + "community": 96, "norm_label": "datetime" }, { @@ -17190,7 +17220,7 @@ "source_location": "L126", "_origin": "ast", "id": "app_crud_crm_quote_row_to_dict", - "community": 8, + "community": 96, "norm_label": "_row_to_dict()" }, { @@ -17200,7 +17230,7 @@ "source_location": "L178", "_origin": "ast", "id": "app_crud_crm_quote_quote_row_to_dict", - "community": 8, + "community": 96, "norm_label": "quote_row_to_dict()" }, { @@ -17210,7 +17240,7 @@ "source_location": "L182", "_origin": "ast", "id": "app_crud_crm_quote_build_quote_filters", - "community": 8, + "community": 96, "norm_label": "_build_quote_filters()" }, { @@ -17220,7 +17250,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_quote_py_query", - "community": 8, + "community": 96, "norm_label": "query" }, { @@ -17230,7 +17260,7 @@ "source_location": "L339", "_origin": "ast", "id": "app_crud_crm_quote_fill_contract_linked_count", - "community": 8, + "community": 96, "norm_label": "_fill_contract_linked_count()" }, { @@ -17330,7 +17360,7 @@ "source_location": "L559", "_origin": "ast", "id": "app_crud_crm_quote_list_quotes", - "community": 8, + "community": 96, "norm_label": "list_quotes()" }, { @@ -17430,7 +17460,7 @@ "source_location": "L1020", "_origin": "ast", "id": "app_crud_crm_quote_view_by_share_code", - "community": 8, + "community": 96, "norm_label": "view_by_share_code()" }, { @@ -17480,7 +17510,7 @@ "source_location": "L1262", "_origin": "ast", "id": "app_crud_crm_quote_query_versions", - "community": 8, + "community": 96, "norm_label": "query_versions()" }, { @@ -17530,7 +17560,7 @@ "source_location": "L1426", "_origin": "ast", "id": "app_crud_crm_quote_period_key", - "community": 8, + "community": 96, "norm_label": "_period_key()" }, { @@ -17540,7 +17570,7 @@ "source_location": "L1435", "_origin": "ast", "id": "app_crud_crm_quote_statistics_trend", - "community": 8, + "community": 96, "norm_label": "statistics_trend()" }, { @@ -17560,7 +17590,7 @@ "source_location": "L127", "_origin": "ast", "id": "app_crud_crm_quote_rationale_127", - "community": 8, + "community": 96, "norm_label": "orm \u2192 camelcase(\u5355\u70b9\u771f\u76f8)" }, { @@ -17570,7 +17600,7 @@ "source_location": "L189", "_origin": "ast", "id": "app_crud_crm_quote_rationale_189", - "community": 8, + "community": 96, "norm_label": "java: buildquerywrapper" }, { @@ -17580,7 +17610,7 @@ "source_location": "L340", "_origin": "ast", "id": "app_crud_crm_quote_rationale_340", - "community": 8, + "community": 96, "norm_label": "java: fillcontractlinkedcount" }, { @@ -17630,7 +17660,7 @@ "source_location": "L1028", "_origin": "ast", "id": "app_crud_crm_quote_rationale_1028", - "community": 8, + "community": 96, "norm_label": "java: viewbysharecode" }, { @@ -17690,7 +17720,7 @@ "source_location": "L1444", "_origin": "ast", "id": "app_crud_crm_quote_rationale_1444", - "community": 8, + "community": 96, "norm_label": "java: statisticstrend" }, { @@ -18310,7 +18340,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_quote_share_log", - "community": 113, + "community": 25, "norm_label": "quote_share_log.py" }, { @@ -18320,7 +18350,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_crud_crm_quote_share_log_row_to_dict", - "community": 113, + "community": 25, "norm_label": "_row_to_dict()" }, { @@ -18330,7 +18360,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_quote_share_log_py_any", - "community": 113, + "community": 25, "norm_label": "any" }, { @@ -18340,7 +18370,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_crud_crm_quote_share_log_parse_user_agent", - "community": 113, + "community": 25, "norm_label": "_parse_user_agent()" }, { @@ -18350,7 +18380,7 @@ "source_location": "L42", "_origin": "ast", "id": "app_crud_crm_quote_share_log_record_visit", - "community": 113, + "community": 25, "norm_label": "record_visit()" }, { @@ -18360,7 +18390,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_quote_share_log_py_session", - "community": 113, + "community": 25, "norm_label": "session" }, { @@ -18370,7 +18400,7 @@ "source_location": "L75", "_origin": "ast", "id": "app_crud_crm_quote_share_log_list_share_logs", - "community": 113, + "community": 25, "norm_label": "list_share_logs()" }, { @@ -18380,7 +18410,7 @@ "source_location": "L97", "_origin": "ast", "id": "app_crud_crm_quote_share_log_share_log_statistics", - "community": 113, + "community": 25, "norm_label": "share_log_statistics()" }, { @@ -18390,7 +18420,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_quote_share_log_rationale_1", - "community": 113, + "community": 25, "norm_label": "crm \u62a5\u4ef7\u5355\u5206\u4eab\u8bbf\u95ee\u65e5\u5fd7 crud \u2014 \u5bf9\u7167 crmquotesharelogserviceimpl.java" }, { @@ -18400,7 +18430,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_crud_crm_quote_share_log_rationale_33", - "community": 113, + "community": 25, "norm_label": "\u7b80\u6613 user-agent \u89e3\u6790(\u66ff\u4ee3 hutool useragentutil)" }, { @@ -18410,7 +18440,7 @@ "source_location": "L82", "_origin": "ast", "id": "app_crud_crm_quote_share_log_rationale_82", - "community": 113, + "community": 25, "norm_label": "java: querylogsbyquoteid" }, { @@ -18420,7 +18450,7 @@ "source_location": "L104", "_origin": "ast", "id": "app_crud_crm_quote_share_log_rationale_104", - "community": 113, + "community": 25, "norm_label": "java: statisticsvisits" }, { @@ -18430,7 +18460,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_crm_statistics", - "community": 182, + "community": 108, "norm_label": "statistics.py" }, { @@ -18440,7 +18470,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_crud_crm_statistics_customer_base_query", - "community": 182, + "community": 108, "norm_label": "_customer_base_query()" }, { @@ -18450,7 +18480,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_statistics_py_session", - "community": 182, + "community": 108, "norm_label": "session" }, { @@ -18460,7 +18490,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_crud_crm_statistics_get_overview_statistics", - "community": 182, + "community": 108, "norm_label": "get_overview_statistics()" }, { @@ -18470,7 +18500,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_statistics_py_any", - "community": 182, + "community": 108, "norm_label": "any" }, { @@ -18480,7 +18510,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_crud_crm_statistics_get_source_statistics", - "community": 182, + "community": 108, "norm_label": "get_source_statistics()" }, { @@ -18490,7 +18520,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_crud_crm_statistics_get_level_statistics", - "community": 182, + "community": 108, "norm_label": "get_level_statistics()" }, { @@ -18500,7 +18530,7 @@ "source_location": "L72", "_origin": "ast", "id": "app_crud_crm_statistics_get_industry_statistics", - "community": 182, + "community": 108, "norm_label": "get_industry_statistics()" }, { @@ -18510,7 +18540,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_crud_crm_statistics_get_trend_statistics", - "community": 182, + "community": 108, "norm_label": "get_trend_statistics()" }, { @@ -18520,7 +18550,7 @@ "source_location": "L108", "_origin": "ast", "id": "app_crud_crm_statistics_get_owner_statistics", - "community": 182, + "community": 108, "norm_label": "get_owner_statistics()" }, { @@ -18530,7 +18560,7 @@ "source_location": "L124", "_origin": "ast", "id": "app_crud_crm_statistics_get_follow_statistics", - "community": 182, + "community": 108, "norm_label": "get_follow_statistics()" }, { @@ -18540,7 +18570,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_crud_crm_statistics_rationale_27", - "community": 182, + "community": 108, "norm_label": "\u5ba2\u6237\u7edf\u8ba1\u6982\u89c8:\u5ba2\u6237\u603b\u6570\u3001\u516c\u6d77\u6c60\u6570\u3001\u672c\u6708\u65b0\u589e\u3001\u6210\u4ea4\u6570" }, { @@ -18570,7 +18600,7 @@ "source_location": "L44", "_origin": "ast", "id": "app_crud_crm_supplier_info_row_to_dict", - "community": 32, + "community": 60, "norm_label": "_row_to_dict()" }, { @@ -18580,7 +18610,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_supplier_info_py_any", - "community": 32, + "community": 60, "norm_label": "any" }, { @@ -18590,7 +18620,7 @@ "source_location": "L69", "_origin": "ast", "id": "app_crud_crm_supplier_info_apply_list_filters", - "community": 32, + "community": 60, "norm_label": "_apply_list_filters()" }, { @@ -18600,7 +18630,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_crud_crm_supplier_info_list_supplier_info", - "community": 32, + "community": 60, "norm_label": "list_supplier_info()" }, { @@ -18610,7 +18640,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_crm_supplier_info_py_session", - "community": 32, + "community": 60, "norm_label": "session" }, { @@ -18620,7 +18650,7 @@ "source_location": "L106", "_origin": "ast", "id": "app_crud_crm_supplier_info_list_all_supplier_info", - "community": 32, + "community": 60, "norm_label": "list_all_supplier_info()" }, { @@ -18640,7 +18670,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_crud_crm_supplier_info_create_supplier_info", - "community": 32, + "community": 60, "norm_label": "create_supplier_info()" }, { @@ -18660,7 +18690,7 @@ "source_location": "L218", "_origin": "ast", "id": "app_crud_crm_supplier_info_soft_delete_supplier_info", - "community": 32, + "community": 60, "norm_label": "soft_delete_supplier_info()" }, { @@ -18680,7 +18710,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_crud_crm_supplier_info_rationale_45", - "community": 32, + "community": 60, "norm_label": "orm \u2192 camelcase(\u5355\u70b9\u771f\u76f8)" }, { @@ -18690,7 +18720,7 @@ "source_location": "L70", "_origin": "ast", "id": "app_crud_crm_supplier_info_rationale_70", - "community": 32, + "community": 60, "norm_label": "java: buildquerywrapper" }, { @@ -18700,7 +18730,7 @@ "source_location": "L114", "_origin": "ast", "id": "app_crud_crm_supplier_info_rationale_114", - "community": 32, + "community": 60, "norm_label": "java: querylist(\u4e0d\u5206\u9875,\u62a5\u4ef7\u5355\u4e0b\u62c9)" }, { @@ -18710,7 +18740,7 @@ "source_location": "L226", "_origin": "ast", "id": "app_crud_crm_supplier_info_rationale_226", - "community": 32, + "community": 60, "norm_label": "java: deletewithvalidbyids(\u95e8\u6237\u8f6f\u5220)" }, { @@ -19110,7 +19140,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_ethnic", - "community": 34, + "community": 95, "norm_label": "ethnic.py" }, { @@ -19120,7 +19150,7 @@ "source_location": "L9", "_origin": "ast", "id": "app_crud_ethnic_row_to_dict", - "community": 34, + "community": 95, "norm_label": "_row_to_dict()" }, { @@ -19130,7 +19160,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_ethnic_py_any", - "community": 34, + "community": 95, "norm_label": "any" }, { @@ -19140,7 +19170,7 @@ "source_location": "L18", "_origin": "ast", "id": "app_crud_ethnic_list_ethnics", - "community": 34, + "community": 95, "norm_label": "list_ethnics()" }, { @@ -19150,7 +19180,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_ethnic_py_session", - "community": 34, + "community": 95, "norm_label": "session" }, { @@ -19160,7 +19190,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_ethnic_rationale_1", - "community": 34, + "community": 95, "norm_label": "\u6c11\u65cf\u7801\u8868 crud(\u5168\u5c40 sys_ethnic)" }, { @@ -19170,7 +19200,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_leave", - "community": 86, + "community": 34, "norm_label": "leave.py" }, { @@ -19180,7 +19210,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_crud_leave_total_pages", - "community": 12, + "community": 121, "norm_label": "total_pages()" }, { @@ -19190,7 +19220,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_crud_leave_row_to_dict", - "community": 86, + "community": 34, "norm_label": "_row_to_dict()" }, { @@ -19200,7 +19230,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_leave_py_any", - "community": 86, + "community": 34, "norm_label": "any" }, { @@ -19210,7 +19240,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_crud_leave_list_leaves", - "community": 86, + "community": 34, "norm_label": "list_leaves()" }, { @@ -19220,7 +19250,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_leave_py_session", - "community": 86, + "community": 34, "norm_label": "session" }, { @@ -19230,7 +19260,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_crud_leave_get_leave", - "community": 86, + "community": 34, "norm_label": "get_leave()" }, { @@ -19240,7 +19270,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_crud_leave_create_leave", - "community": 86, + "community": 34, "norm_label": "create_leave()" }, { @@ -19250,7 +19280,7 @@ "source_location": "L110", "_origin": "ast", "id": "app_crud_leave_update_leave", - "community": 86, + "community": 34, "norm_label": "update_leave()" }, { @@ -19260,7 +19290,7 @@ "source_location": "L130", "_origin": "ast", "id": "app_crud_leave_update_leave_status", - "community": 86, + "community": 34, "norm_label": "update_leave_status()" }, { @@ -19270,7 +19300,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_crud_leave_soft_delete_leave", - "community": 86, + "community": 34, "norm_label": "soft_delete_leave()" }, { @@ -19560,7 +19590,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_monitor_oper_log", - "community": 33, + "community": 71, "norm_label": "oper_log.py" }, { @@ -19570,7 +19600,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_crud_monitor_oper_log_oper_status", - "community": 33, + "community": 71, "norm_label": "_oper_status()" }, { @@ -19580,7 +19610,7 @@ "source_location": "L20", "_origin": "ast", "id": "app_crud_monitor_oper_log_row_to_oper_log", - "community": 33, + "community": 71, "norm_label": "_row_to_oper_log()" }, { @@ -19590,7 +19620,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_monitor_oper_log_py_any", - "community": 33, + "community": 71, "norm_label": "any" }, { @@ -19600,7 +19630,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_crud_monitor_oper_log_apply_oper_log_scope", - "community": 33, + "community": 71, "norm_label": "_apply_oper_log_scope()" }, { @@ -19610,7 +19640,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_monitor_oper_log_py_session", - "community": 33, + "community": 71, "norm_label": "session" }, { @@ -19620,7 +19650,7 @@ "source_location": "L102", "_origin": "ast", "id": "app_crud_monitor_oper_log_oper_log_row_in_scope", - "community": 33, + "community": 71, "norm_label": "_oper_log_row_in_scope()" }, { @@ -19630,7 +19660,7 @@ "source_location": "L112", "_origin": "ast", "id": "app_crud_monitor_oper_log_list_oper_logs", - "community": 33, + "community": 71, "norm_label": "list_oper_logs()" }, { @@ -19640,7 +19670,7 @@ "source_location": "L180", "_origin": "ast", "id": "app_crud_monitor_oper_log_get_oper_log", - "community": 33, + "community": 71, "norm_label": "get_oper_log()" }, { @@ -19650,7 +19680,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_monitor_oper_log_rationale_1", - "community": 33, + "community": 71, "norm_label": "\u64cd\u4f5c\u65e5\u5fd7:\u57fa\u4e8e sys_api_request_log \u9002\u914d ruoyi operlog \u89c6\u56fe" }, { @@ -19660,7 +19690,7 @@ "source_location": "L57", "_origin": "ast", "id": "app_crud_monitor_oper_log_rationale_57", - "community": 33, + "community": 71, "norm_label": "\u64cd\u4f5c\u65e5\u5fd7\u6309 oper_user_id(user_id/create_by)\u5e94\u7528\u6570\u636e\u6743\u9650\u3002" }, { @@ -20220,7 +20250,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_site", - "community": 96, + "community": 106, "norm_label": "site.py" }, { @@ -20230,7 +20260,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_crud_site_row_to_dict", - "community": 96, + "community": 106, "norm_label": "_row_to_dict()" }, { @@ -20240,7 +20270,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_site_py_any", - "community": 96, + "community": 106, "norm_label": "any" }, { @@ -20250,7 +20280,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_crud_site_list_sites", - "community": 96, + "community": 106, "norm_label": "list_sites()" }, { @@ -20260,7 +20290,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_site_py_session", - "community": 96, + "community": 106, "norm_label": "session" }, { @@ -20270,7 +20300,7 @@ "source_location": "L69", "_origin": "ast", "id": "app_crud_site_get_site", - "community": 96, + "community": 106, "norm_label": "get_site()" }, { @@ -20280,7 +20310,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_crud_site_site_code_exists", - "community": 96, + "community": 106, "norm_label": "site_code_exists()" }, { @@ -20290,7 +20320,7 @@ "source_location": "L84", "_origin": "ast", "id": "app_crud_site_create_site", - "community": 96, + "community": 106, "norm_label": "create_site()" }, { @@ -20300,7 +20330,7 @@ "source_location": "L131", "_origin": "ast", "id": "app_crud_site_update_site", - "community": 96, + "community": 106, "norm_label": "update_site()" }, { @@ -20310,7 +20340,7 @@ "source_location": "L183", "_origin": "ast", "id": "app_crud_site_soft_delete_site", - "community": 96, + "community": 106, "norm_label": "soft_delete_site()" }, { @@ -20320,7 +20350,7 @@ "source_location": "L194", "_origin": "ast", "id": "app_crud_site_total_pages", - "community": 96, + "community": 106, "norm_label": "total_pages()" }, { @@ -20330,7 +20360,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_crud_tenant", - "community": 95, + "community": 101, "norm_label": "tenant.py" }, { @@ -20340,7 +20370,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_crud_tenant_row_to_dict", - "community": 95, + "community": 101, "norm_label": "_row_to_dict()" }, { @@ -20350,7 +20380,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_tenant_py_any", - "community": 95, + "community": 101, "norm_label": "any" }, { @@ -20360,7 +20390,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_crud_tenant_list_tenants", - "community": 95, + "community": 101, "norm_label": "list_tenants()" }, { @@ -20370,7 +20400,7 @@ "source_location": "", "_origin": "ast", "id": "app_crud_tenant_py_session", - "community": 95, + "community": 101, "norm_label": "session" }, { @@ -20380,7 +20410,7 @@ "source_location": "L64", "_origin": "ast", "id": "app_crud_tenant_get_tenant", - "community": 95, + "community": 101, "norm_label": "get_tenant()" }, { @@ -20390,7 +20420,7 @@ "source_location": "L72", "_origin": "ast", "id": "app_crud_tenant_tenant_no_exists", - "community": 95, + "community": 101, "norm_label": "tenant_no_exists()" }, { @@ -20400,7 +20430,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_crud_tenant_create_tenant", - "community": 95, + "community": 101, "norm_label": "create_tenant()" }, { @@ -20410,7 +20440,7 @@ "source_location": "L116", "_origin": "ast", "id": "app_crud_tenant_update_tenant", - "community": 95, + "community": 101, "norm_label": "update_tenant()" }, { @@ -20420,7 +20450,7 @@ "source_location": "L158", "_origin": "ast", "id": "app_crud_tenant_soft_delete_tenant", - "community": 95, + "community": 101, "norm_label": "soft_delete_tenant()" }, { @@ -20430,7 +20460,7 @@ "source_location": "L171", "_origin": "ast", "id": "app_crud_tenant_total_pages", - "community": 95, + "community": 101, "norm_label": "total_pages()" }, { @@ -20460,7 +20490,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_crud_user_usercrudcompat", - "community": 44, + "community": 36, "norm_label": "_usercrudcompat" }, { @@ -20470,7 +20500,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_crud_user_usercrudcompat_get_by_user_no", - "community": 44, + "community": 36, "norm_label": ".get_by_user_no()" }, { @@ -20490,7 +20520,7 @@ "source_location": "L35", "_origin": "ast", "id": "app_crud_user_usercrudcompat_get_by_user_no_for_web_login", - "community": 44, + "community": 36, "norm_label": ".get_by_user_no_for_web_login()" }, { @@ -20680,7 +20710,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_crud_user_rationale_36", - "community": 44, + "community": 36, "norm_label": "web \u767b\u5f55:\u4f18\u5148 default_tenant_no;\u672a\u547d\u4e2d\u65f6\u6309 user_no \u56de\u9000(\u517c\u5bb9\u672a\u6267\u884c\u79df\u6237\u8fc1\u79fb\u7684\u5e93)\u3002" }, { @@ -21000,7 +21030,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_main", - "community": 38, + "community": 120, "norm_label": "main.py" }, { @@ -21010,7 +21040,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_main_lifespan", - "community": 38, + "community": 120, "norm_label": "lifespan()" }, { @@ -21020,7 +21050,7 @@ "source_location": "", "_origin": "ast", "id": "fastapi", - "community": 50, + "community": 51, "norm_label": "fastapi" }, { @@ -21030,7 +21060,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_main_db_pool_keepalive_loop", - "community": 38, + "community": 120, "norm_label": "_db_pool_keepalive_loop()" }, { @@ -21040,7 +21070,7 @@ "source_location": "L126", "_origin": "ast", "id": "app_main_error_json", - "community": 38, + "community": 120, "norm_label": "_error_json()" }, { @@ -21050,7 +21080,7 @@ "source_location": "", "_origin": "ast", "id": "jsonresponse", - "community": 38, + "community": 120, "norm_label": "jsonresponse" }, { @@ -21060,7 +21090,7 @@ "source_location": "L139", "_origin": "ast", "id": "app_main_sqlalchemy_exception_handler", - "community": 38, + "community": 120, "norm_label": "sqlalchemy_exception_handler()" }, { @@ -21070,7 +21100,7 @@ "source_location": "", "_origin": "ast", "id": "app_main_py_request", - "community": 38, + "community": 120, "norm_label": "request" }, { @@ -21080,7 +21110,7 @@ "source_location": "", "_origin": "ast", "id": "sqlalchemyerror", - "community": 38, + "community": 120, "norm_label": "sqlalchemyerror" }, { @@ -21090,7 +21120,7 @@ "source_location": "L150", "_origin": "ast", "id": "app_main_unhandled_exception_handler", - "community": 38, + "community": 120, "norm_label": "unhandled_exception_handler()" }, { @@ -21100,7 +21130,7 @@ "source_location": "", "_origin": "ast", "id": "app_main_py_exception", - "community": 38, + "community": 120, "norm_label": "exception" }, { @@ -21110,7 +21140,7 @@ "source_location": "L180", "_origin": "ast", "id": "app_main_mask_secret", - "community": 38, + "community": 120, "norm_label": "_mask_secret()" }, { @@ -21120,7 +21150,7 @@ "source_location": "L202", "_origin": "ast", "id": "app_main_root", - "community": 38, + "community": 120, "norm_label": "root()" }, { @@ -21130,7 +21160,7 @@ "source_location": "L207", "_origin": "ast", "id": "app_main_health_check", - "community": 38, + "community": 120, "norm_label": "health_check()" }, { @@ -21140,7 +21170,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_main_rationale_79", - "community": 38, + "community": 120, "norm_label": "\u5b9a\u671f ping mysql,\u907f\u514d\u8fdc\u7a0b\u5e93/nat \u56de\u6536\u7a7a\u95f2 tcp \u540e\u9996\u8bf7\u6c42\u957f\u65f6\u95f4\u5361\u4f4f\u3002" }, { @@ -21150,7 +21180,7 @@ "source_location": "L140", "_origin": "ast", "id": "app_main_rationale_140", - "community": 38, + "community": 120, "norm_label": "\u6570\u636e\u5e93\u5f02\u5e38:\u8fd4\u56de json \u5e76\u4fdd\u7559 cors \u5934,\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef" }, { @@ -21160,7 +21190,7 @@ "source_location": "L151", "_origin": "ast", "id": "app_main_rationale_151", - "community": 38, + "community": 120, "norm_label": "\u672a\u6355\u83b7\u5f02\u5e38:\u7edf\u4e00 json 500,\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 access-control-allow-origin" }, { @@ -21170,7 +21200,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_init", - "community": 17, + "community": 145, "norm_label": "__init__.py" }, { @@ -21180,7 +21210,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_base", - "community": 17, + "community": 145, "norm_label": "base.py" }, { @@ -21190,7 +21220,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_models_base_basemodel", - "community": 0, + "community": 12, "norm_label": "basemodel" }, { @@ -21200,7 +21230,7 @@ "source_location": "", "_origin": "ast", "id": "base", - "community": 17, + "community": 145, "norm_label": "base" }, { @@ -21210,7 +21240,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_models_base_basemodel_tablename", - "community": 0, + "community": 12, "norm_label": ".__tablename__()" }, { @@ -21220,7 +21250,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_models_base_basemodel_to_dict", - "community": 0, + "community": 12, "norm_label": ".to_dict()" }, { @@ -21230,7 +21260,7 @@ "source_location": "L44", "_origin": "ast", "id": "app_models_base_softdeletemodel", - "community": 17, + "community": 145, "norm_label": "softdeletemodel" }, { @@ -21240,7 +21270,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_models_base_softdeletemodel_get_active", - "community": 17, + "community": 145, "norm_label": ".get_active()" }, { @@ -21250,7 +21280,7 @@ "source_location": "L55", "_origin": "ast", "id": "app_models_base_softdeletemodel_soft_delete", - "community": 17, + "community": 145, "norm_label": ".soft_delete()" }, { @@ -21260,7 +21290,7 @@ "source_location": "L60", "_origin": "ast", "id": "app_models_base_softdeletemodel_restore", - "community": 17, + "community": 145, "norm_label": ".restore()" }, { @@ -21270,7 +21300,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_bx_models", - "community": 50, + "community": 14, "norm_label": "bx_models.py" }, { @@ -21290,7 +21320,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_models_bx_models_bxworkflowdef", - "community": 14, + "community": 64, "norm_label": "bxworkflowdef" }, { @@ -21310,7 +21340,7 @@ "source_location": "L95", "_origin": "ast", "id": "app_models_bx_models_bxadvanceapply", - "community": 41, + "community": 10, "norm_label": "bxadvanceapply" }, { @@ -21320,7 +21350,7 @@ "source_location": "L128", "_origin": "ast", "id": "app_models_bx_models_bxadvanceapproval", - "community": 41, + "community": 10, "norm_label": "bxadvanceapproval" }, { @@ -21360,7 +21390,7 @@ "source_location": "L234", "_origin": "ast", "id": "app_models_bx_models_bxreimburseoffset", - "community": 15, + "community": 14, "norm_label": "bxreimburseoffset" }, { @@ -21370,7 +21400,7 @@ "source_location": "L252", "_origin": "ast", "id": "app_models_bx_models_bxattachment", - "community": 66, + "community": 14, "norm_label": "bxattachment" }, { @@ -21390,7 +21420,7 @@ "source_location": "L297", "_origin": "ast", "id": "app_models_bx_models_bxinvoiceledger", - "community": 50, + "community": 43, "norm_label": "bxinvoiceledger" }, { @@ -21400,7 +21430,7 @@ "source_location": "L322", "_origin": "ast", "id": "app_models_bx_models_bxreimburseinvoice", - "community": 15, + "community": 14, "norm_label": "bxreimburseinvoice" }, { @@ -21410,7 +21440,7 @@ "source_location": "L340", "_origin": "ast", "id": "app_models_bx_models_bxinvoicewalletsummary", - "community": 50, + "community": 43, "norm_label": "bxinvoicewalletsummary" }, { @@ -21420,7 +21450,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_bx_models_rationale_1", - "community": 50, + "community": 14, "norm_label": "\u62a5\u9500(bx)\u6a21\u5757\u6570\u636e\u6a21\u578b \u2014 \u5bf9\u9f50 docs/sql/20260606_bx_tables.sql" }, { @@ -21430,7 +21460,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_crm_models", - "community": 56, + "community": 55, "norm_label": "crm_models.py" }, { @@ -21460,7 +21490,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_models_crm_models_crmproductbrand", - "community": 56, + "community": 21, "norm_label": "crmproductbrand" }, { @@ -21470,7 +21500,7 @@ "source_location": "L99", "_origin": "ast", "id": "app_models_crm_models_crmproductalias", - "community": 56, + "community": 21, "norm_label": "crmproductalias" }, { @@ -21510,7 +21540,7 @@ "source_location": "L269", "_origin": "ast", "id": "app_models_crm_models_crminvoiceinfo", - "community": 91, + "community": 72, "norm_label": "crminvoiceinfo" }, { @@ -21530,7 +21560,7 @@ "source_location": "L328", "_origin": "ast", "id": "app_models_crm_models_crmcustomerpool", - "community": 171, + "community": 55, "norm_label": "crmcustomerpool" }, { @@ -21540,7 +21570,7 @@ "source_location": "L354", "_origin": "ast", "id": "app_models_crm_models_crmcustomerpoolrule", - "community": 171, + "community": 55, "norm_label": "crmcustomerpoolrule" }, { @@ -21560,7 +21590,7 @@ "source_location": "L420", "_origin": "ast", "id": "app_models_crm_models_crmopportunityfollow", - "community": 4, + "community": 32, "norm_label": "crmopportunityfollow" }, { @@ -21590,7 +21620,7 @@ "source_location": "L512", "_origin": "ast", "id": "app_models_crm_models_crmcontract", - "community": 29, + "community": 50, "norm_label": "crmcontract" }, { @@ -21600,7 +21630,7 @@ "source_location": "L597", "_origin": "ast", "id": "app_models_crm_models_crmcontractapproversetting", - "community": 56, + "community": 92, "norm_label": "crmcontractapproversetting" }, { @@ -21630,7 +21660,7 @@ "source_location": "L678", "_origin": "ast", "id": "app_models_crm_models_crmcontracttemplate", - "community": 29, + "community": 40, "norm_label": "crmcontracttemplate" }, { @@ -21700,7 +21730,7 @@ "source_location": "L921", "_origin": "ast", "id": "app_models_crm_models_crmquotesharelog", - "community": 113, + "community": 25, "norm_label": "crmquotesharelog" }, { @@ -21720,7 +21750,7 @@ "source_location": "L997", "_origin": "ast", "id": "app_models_crm_models_crmcluefollow", - "community": 39, + "community": 32, "norm_label": "crmcluefollow" }, { @@ -21750,7 +21780,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_crm_models_rationale_1", - "community": 56, + "community": 55, "norm_label": "crm \u6a21\u5757\u6570\u636e\u6a21\u578b(\u4ea7\u54c1\u5206\u7c7b\u3001\u4ea7\u54c1\u4e3b\u8868\u3001\u7edf\u4e00\u9644\u4ef6\u8868\u3001\u5ba2\u6237\u7ba1\u7406\u3001\u516c\u6d77\u6c60\u3001\u7ebf\u7d22\u7ba1\u7406)" }, { @@ -21800,7 +21830,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_models_db_models_dbweighingslip", - "community": 62, + "community": 20, "norm_label": "dbweighingslip" }, { @@ -21837,7 +21867,7 @@ "label": "DutyDay", "file_type": "code", "source_file": "app/models/duty_models.py", - "source_location": "L25", + "source_location": "L31", "_origin": "ast", "id": "app_models_duty_models_dutyday", "community": 26, @@ -21847,7 +21877,7 @@ "label": "DutySlot", "file_type": "code", "source_file": "app/models/duty_models.py", - "source_location": "L45", + "source_location": "L51", "_origin": "ast", "id": "app_models_duty_models_dutyslot", "community": 26, @@ -21857,7 +21887,7 @@ "label": "DutyAssignment", "file_type": "code", "source_file": "app/models/duty_models.py", - "source_location": "L65", + "source_location": "L75", "_origin": "ast", "id": "app_models_duty_models_dutyassignment", "community": 26, @@ -21880,7 +21910,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_models", - "community": 34, + "community": 107, "norm_label": "models.py" }, { @@ -21890,7 +21920,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_models_models_userrole", - "community": 34, + "community": 113, "norm_label": "userrole" }, { @@ -21900,7 +21930,7 @@ "source_location": "", "_origin": "ast", "id": "str", - "community": 34, + "community": 113, "norm_label": "str" }, { @@ -21910,7 +21940,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_models_models_sysuser", - "community": 44, + "community": 53, "norm_label": "sysuser" }, { @@ -21920,7 +21950,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_models_models_sysrole", - "community": 44, + "community": 53, "norm_label": "sysrole" }, { @@ -21930,7 +21960,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_models_models_sysuserrole", - "community": 36, + "community": 53, "norm_label": "sysuserrole" }, { @@ -21970,7 +22000,7 @@ "source_location": "L165", "_origin": "ast", "id": "app_models_models_sysdept", - "community": 68, + "community": 53, "norm_label": "sysdept" }, { @@ -21980,7 +22010,7 @@ "source_location": "L189", "_origin": "ast", "id": "app_models_models_systenant", - "community": 95, + "community": 101, "norm_label": "systenant" }, { @@ -21990,7 +22020,7 @@ "source_location": "L210", "_origin": "ast", "id": "app_models_models_syssite", - "community": 96, + "community": 106, "norm_label": "syssite" }, { @@ -22040,7 +22070,7 @@ "source_location": "L320", "_origin": "ast", "id": "app_models_models_sysethnic", - "community": 34, + "community": 145, "norm_label": "sysethnic" }, { @@ -22050,7 +22080,7 @@ "source_location": "L340", "_origin": "ast", "id": "app_models_models_sysdictdata", - "community": 144, + "community": 53, "norm_label": "sysdictdata" }, { @@ -22060,7 +22090,7 @@ "source_location": "L372", "_origin": "ast", "id": "app_models_models_sysapirequestlog", - "community": 33, + "community": 110, "norm_label": "sysapirequestlog" }, { @@ -22070,7 +22100,7 @@ "source_location": "L404", "_origin": "ast", "id": "app_models_models_sysapirequestloghis", - "community": 33, + "community": 110, "norm_label": "sysapirequestloghis" }, { @@ -22080,7 +22110,7 @@ "source_location": "L446", "_origin": "ast", "id": "app_models_models_bizleaverequest", - "community": 86, + "community": 145, "norm_label": "bizleaverequest" }, { @@ -22090,7 +22120,7 @@ "source_location": "L476", "_origin": "ast", "id": "app_models_models_bizattachment", - "community": 17, + "community": 145, "norm_label": "bizattachment" }, { @@ -22100,7 +22130,7 @@ "source_location": "L506", "_origin": "ast", "id": "app_models_models_wfprocessdef", - "community": 107, + "community": 141, "norm_label": "wfprocessdef" }, { @@ -22110,7 +22140,7 @@ "source_location": "L527", "_origin": "ast", "id": "app_models_models_wfprocessversion", - "community": 107, + "community": 141, "norm_label": "wfprocessversion" }, { @@ -22120,7 +22150,7 @@ "source_location": "L549", "_origin": "ast", "id": "app_models_models_wfnode", - "community": 107, + "community": 141, "norm_label": "wfnode" }, { @@ -22140,7 +22170,7 @@ "source_location": "L594", "_origin": "ast", "id": "app_models_models_wfprocessinstance", - "community": 34, + "community": 107, "norm_label": "wfprocessinstance" }, { @@ -22160,7 +22190,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_models_rationale_1", - "community": 34, + "community": 107, "norm_label": "\u6570\u636e\u6a21\u578b(\u4e0e docs/sql/shanxia2.0.sql \u5168\u5e93\u5bfc\u51fa\u57fa\u7ebf\u5bf9\u9f50\u7684\u6838\u5fc3\u7cfb\u7edf\u8868)" }, { @@ -22170,7 +22200,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_models_models_rationale_12", - "community": 34, + "community": 113, "norm_label": "web \u7ba1\u7406\u7aef\u7ea6\u5b9a\u89d2\u8272(\u7531 sys_role.role_name \u6620\u5c04\u800c\u6765,\u975e\u6570\u636e\u5e93\u679a\u4e3e)" }, { @@ -22180,7 +22210,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_models_models_rationale_78", - "community": 36, + "community": 53, "norm_label": "\u7528\u6237-\u89d2\u8272\u5173\u8054 sys_user_role(v0.3)" }, { @@ -22210,7 +22240,7 @@ "source_location": "L190", "_origin": "ast", "id": "app_models_models_rationale_190", - "community": 95, + "community": 101, "norm_label": "\u79df\u6237\u8868 sys_tenant(v0.3 2.1.1)" }, { @@ -22240,7 +22270,7 @@ "source_location": "L321", "_origin": "ast", "id": "app_models_models_rationale_321", - "community": 34, + "community": 145, "norm_label": "\u6c11\u65cf\u7801\u8868 sys_ethnic(\u56fd\u6807 gb/t 3304,\u5168\u5c40)" }, { @@ -22250,7 +22280,7 @@ "source_location": "L447", "_origin": "ast", "id": "app_models_models_rationale_447", - "community": 86, + "community": 145, "norm_label": "\u8bf7\u5047\u7533\u8bf7 biz_leave_request" }, { @@ -22260,7 +22290,7 @@ "source_location": "L528", "_origin": "ast", "id": "app_models_models_rationale_528", - "community": 107, + "community": 141, "norm_label": "\u6d41\u7a0b\u5b9a\u4e49\u7248\u672c wf_process_version" }, { @@ -22280,7 +22310,7 @@ "source_location": "L595", "_origin": "ast", "id": "app_models_models_rationale_595", - "community": 34, + "community": 107, "norm_label": "\u6d41\u7a0b\u5b9e\u4f8b wf_process_instance" }, { @@ -22290,7 +22320,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_models_pl_models", - "community": 17, + "community": 145, "norm_label": "pl_models.py" }, { @@ -22300,7 +22330,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_models_pl_models_plcarrier", - "community": 173, + "community": 76, "norm_label": "plcarrier" }, { @@ -22310,7 +22340,7 @@ "source_location": "L57", "_origin": "ast", "id": "app_models_pl_models_plvehicle", - "community": 5, + "community": 115, "norm_label": "plvehicle" }, { @@ -22320,7 +22350,7 @@ "source_location": "L84", "_origin": "ast", "id": "app_models_pl_models_plpersonnel", - "community": 64, + "community": 115, "norm_label": "plpersonnel" }, { @@ -22330,7 +22360,7 @@ "source_location": "L119", "_origin": "ast", "id": "app_models_pl_models_pltransportaddress", - "community": 58, + "community": 51, "norm_label": "pltransportaddress" }, { @@ -22340,7 +22370,7 @@ "source_location": "L143", "_origin": "ast", "id": "app_models_pl_models_plcert", - "community": 71, + "community": 115, "norm_label": "plcert" }, { @@ -22350,7 +22380,7 @@ "source_location": "L169", "_origin": "ast", "id": "app_models_pl_models_pldriver", - "community": 17, + "community": 145, "norm_label": "pldriver" }, { @@ -22360,7 +22390,7 @@ "source_location": "L195", "_origin": "ast", "id": "app_models_pl_models_plvehiclepersonnel", - "community": 109, + "community": 145, "norm_label": "plvehiclepersonnel" }, { @@ -22370,7 +22400,7 @@ "source_location": "L216", "_origin": "ast", "id": "app_models_pl_models_plvehicledriver", - "community": 17, + "community": 145, "norm_label": "plvehicledriver" }, { @@ -22380,7 +22410,7 @@ "source_location": "L241", "_origin": "ast", "id": "app_models_pl_models_plplan", - "community": 145, + "community": 103, "norm_label": "plplan" }, { @@ -22390,7 +22420,7 @@ "source_location": "L348", "_origin": "ast", "id": "app_models_pl_models_plplancontract", - "community": 5, + "community": 145, "norm_label": "plplancontract" }, { @@ -22400,7 +22430,7 @@ "source_location": "L370", "_origin": "ast", "id": "app_models_pl_models_plplanproduct", - "community": 5, + "community": 103, "norm_label": "plplanproduct" }, { @@ -22410,7 +22440,7 @@ "source_location": "L429", "_origin": "ast", "id": "app_models_pl_models_plplanproductbrandqty", - "community": 17, + "community": 145, "norm_label": "plplanproductbrandqty" }, { @@ -22420,7 +22450,7 @@ "source_location": "L451", "_origin": "ast", "id": "app_models_pl_models_plplanchange", - "community": 17, + "community": 145, "norm_label": "plplanchange" }, { @@ -22430,7 +22460,7 @@ "source_location": "L478", "_origin": "ast", "id": "app_models_pl_models_pltransport", - "community": 145, + "community": 173, "norm_label": "pltransport" }, { @@ -22440,7 +22470,7 @@ "source_location": "L540", "_origin": "ast", "id": "app_models_pl_models_pltransportproductfeedback", - "community": 17, + "community": 41, "norm_label": "pltransportproductfeedback" }, { @@ -22450,7 +22480,7 @@ "source_location": "L561", "_origin": "ast", "id": "app_models_pl_models_pltransportproductbrandqty", - "community": 17, + "community": 41, "norm_label": "pltransportproductbrandqty" }, { @@ -22480,7 +22510,7 @@ "source_location": "L626", "_origin": "ast", "id": "app_models_pl_models_pltransportsitelink", - "community": 174, + "community": 79, "norm_label": "pltransportsitelink" }, { @@ -22490,7 +22520,7 @@ "source_location": "L659", "_origin": "ast", "id": "app_models_pl_models_plinboundorder", - "community": 17, + "community": 145, "norm_label": "plinboundorder" }, { @@ -22500,7 +22530,7 @@ "source_location": "L689", "_origin": "ast", "id": "app_models_pl_models_plinboundorderitem", - "community": 17, + "community": 145, "norm_label": "plinboundorderitem" }, { @@ -22510,7 +22540,7 @@ "source_location": "L715", "_origin": "ast", "id": "app_models_pl_models_plinboundorderitembrandqty", - "community": 17, + "community": 145, "norm_label": "plinboundorderitembrandqty" }, { @@ -22520,7 +22550,7 @@ "source_location": "L738", "_origin": "ast", "id": "app_models_pl_models_ploutboundorder", - "community": 17, + "community": 145, "norm_label": "ploutboundorder" }, { @@ -22530,7 +22560,7 @@ "source_location": "L768", "_origin": "ast", "id": "app_models_pl_models_ploutboundorderitem", - "community": 17, + "community": 145, "norm_label": "ploutboundorderitem" }, { @@ -22540,7 +22570,7 @@ "source_location": "L794", "_origin": "ast", "id": "app_models_pl_models_ploutboundorderitembrandqty", - "community": 17, + "community": 145, "norm_label": "ploutboundorderitembrandqty" }, { @@ -22580,7 +22610,7 @@ "source_location": "L905", "_origin": "ast", "id": "app_models_pl_models_plfreightsettlementtransport", - "community": 17, + "community": 145, "norm_label": "plfreightsettlementtransport" }, { @@ -22590,7 +22620,7 @@ "source_location": "L925", "_origin": "ast", "id": "app_models_pl_models_plremittancevoucher", - "community": 17, + "community": 145, "norm_label": "plremittancevoucher" }, { @@ -22600,7 +22630,7 @@ "source_location": "L952", "_origin": "ast", "id": "app_models_pl_models_plinventory", - "community": 17, + "community": 145, "norm_label": "plinventory" }, { @@ -22610,7 +22640,7 @@ "source_location": "L986", "_origin": "ast", "id": "app_models_pl_models_plinventorytransaction", - "community": 17, + "community": 80, "norm_label": "plinventorytransaction" }, { @@ -22620,7 +22650,7 @@ "source_location": "L1017", "_origin": "ast", "id": "app_models_pl_models_plinventorywarning", - "community": 17, + "community": 145, "norm_label": "plinventorywarning" }, { @@ -22630,7 +22660,7 @@ "source_location": "L1044", "_origin": "ast", "id": "app_models_pl_models_pldocumentreminder", - "community": 0, + "community": 145, "norm_label": "pldocumentreminder" }, { @@ -22710,7 +22740,7 @@ "source_location": "L120", "_origin": "ast", "id": "app_models_pl_models_rationale_120", - "community": 58, + "community": 51, "norm_label": "\u8fd0\u8f93\u901a\u7528\u5730\u5740\u5e93 pl_transport_address" }, { @@ -22720,7 +22750,7 @@ "source_location": "L170", "_origin": "ast", "id": "app_models_pl_models_rationale_170", - "community": 17, + "community": 145, "norm_label": "\u53f8\u673a\u8868 pl_driver(\u517c\u5bb9\u65e7\u8868,\u8fc1\u79fb\u540e\u9010\u6b65\u5e9f\u5f03)" }, { @@ -22730,7 +22760,7 @@ "source_location": "L196", "_origin": "ast", "id": "app_models_pl_models_rationale_196", - "community": 109, + "community": 145, "norm_label": "\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u8868 pl_vehicle_personnel" }, { @@ -22740,7 +22770,7 @@ "source_location": "L217", "_origin": "ast", "id": "app_models_pl_models_rationale_217", - "community": 17, + "community": 145, "norm_label": "\u8f66\u8f86-\u53f8\u673a\u5173\u8054\u8868 pl_vehicle_driver(\u517c\u5bb9\u65e7\u8868)" }, { @@ -22750,7 +22780,7 @@ "source_location": "L349", "_origin": "ast", "id": "app_models_pl_models_rationale_349", - "community": 5, + "community": 145, "norm_label": "\u8fd0\u8f93\u8ba1\u5212-\u5408\u540c\u5173\u8054(\u5206\u4fa7\u591a\u9009) pl_plan_contract" }, { @@ -22760,7 +22790,7 @@ "source_location": "L371", "_origin": "ast", "id": "app_models_pl_models_rationale_371", - "community": 5, + "community": 103, "norm_label": "\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6\u8868 pl_plan_product" }, { @@ -22770,7 +22800,7 @@ "source_location": "L430", "_origin": "ast", "id": "app_models_pl_models_rationale_430", - "community": 17, + "community": 145, "norm_label": "\u8ba1\u5212\u4ea7\u54c1\u5f52\u6863\u54c1\u724c\u6570\u91cf pl_plan_product_brand_qty" }, { @@ -22780,7 +22810,7 @@ "source_location": "L452", "_origin": "ast", "id": "app_models_pl_models_rationale_452", - "community": 17, + "community": 145, "norm_label": "\u8ba1\u5212\u53d8\u66f4\u8bb0\u5f55\u8868 pl_plan_change" }, { @@ -22790,7 +22820,7 @@ "source_location": "L541", "_origin": "ast", "id": "app_models_pl_models_rationale_541", - "community": 17, + "community": 41, "norm_label": "\u8fd0\u8f93\u5355\u6309\u4ea7\u54c1\u56de\u4f20 pl_transport_product_feedback" }, { @@ -22800,7 +22830,7 @@ "source_location": "L562", "_origin": "ast", "id": "app_models_pl_models_rationale_562", - "community": 17, + "community": 41, "norm_label": "\u8fd0\u8f93\u5355\u4ea7\u54c1\u56de\u4f20\u54c1\u724c\u6570\u91cf pl_transport_product_brand_qty" }, { @@ -22830,7 +22860,7 @@ "source_location": "L627", "_origin": "ast", "id": "app_models_pl_models_rationale_627", - "community": 174, + "community": 79, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u73b0\u573a\u94fe\u63a5 pl_transport_site_link(\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5355\u89e3\u8026)" }, { @@ -22840,7 +22870,7 @@ "source_location": "L660", "_origin": "ast", "id": "app_models_pl_models_rationale_660", - "community": 17, + "community": 145, "norm_label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355 pl_inbound_order" }, { @@ -22850,7 +22880,7 @@ "source_location": "L690", "_origin": "ast", "id": "app_models_pl_models_rationale_690", - "community": 17, + "community": 145, "norm_label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355\u660e\u7ec6 pl_inbound_order_item" }, { @@ -22860,7 +22890,7 @@ "source_location": "L716", "_origin": "ast", "id": "app_models_pl_models_rationale_716", - "community": 17, + "community": 145, "norm_label": "\u5165\u5e93\u660e\u7ec6\u54c1\u724c\u6570\u91cf pl_inbound_order_item_brand_qty" }, { @@ -22870,7 +22900,7 @@ "source_location": "L739", "_origin": "ast", "id": "app_models_pl_models_rationale_739", - "community": 17, + "community": 145, "norm_label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355 pl_outbound_order" }, { @@ -22880,7 +22910,7 @@ "source_location": "L769", "_origin": "ast", "id": "app_models_pl_models_rationale_769", - "community": 17, + "community": 145, "norm_label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355\u660e\u7ec6 pl_outbound_order_item" }, { @@ -22890,7 +22920,7 @@ "source_location": "L795", "_origin": "ast", "id": "app_models_pl_models_rationale_795", - "community": 17, + "community": 145, "norm_label": "\u51fa\u5e93\u660e\u7ec6\u54c1\u724c\u6570\u91cf pl_outbound_order_item_brand_qty" }, { @@ -22930,7 +22960,7 @@ "source_location": "L906", "_origin": "ast", "id": "app_models_pl_models_rationale_906", - "community": 17, + "community": 145, "norm_label": "\u7ed3\u7b97\u5355-\u8fd0\u8f93\u5173\u8054\u8868 pl_freight_settlement_transport" }, { @@ -22940,7 +22970,7 @@ "source_location": "L926", "_origin": "ast", "id": "app_models_pl_models_rationale_926", - "community": 17, + "community": 145, "norm_label": "\u6c47\u6b3e\u51ed\u8bc1\u8868 pl_remittance_voucher" }, { @@ -22950,7 +22980,7 @@ "source_location": "L987", "_origin": "ast", "id": "app_models_pl_models_rationale_987", - "community": 17, + "community": 80, "norm_label": "\u5e93\u5b58\u6d41\u6c34\u8868 pl_inventory_transaction" }, { @@ -22960,7 +22990,7 @@ "source_location": "L1018", "_origin": "ast", "id": "app_models_pl_models_rationale_1018", - "community": 17, + "community": 145, "norm_label": "\u5e93\u5b58\u9884\u8b66\u8868 pl_inventory_warning" }, { @@ -22970,7 +23000,7 @@ "source_location": "L1045", "_origin": "ast", "id": "app_models_pl_models_rationale_1045", - "community": 0, + "community": 145, "norm_label": "\u8bc1\u4ef6\u5230\u671f\u63d0\u9192\u8868 pl_document_reminder" }, { @@ -23310,7 +23340,7 @@ "source_location": "L131", "_origin": "ast", "id": "app_schemas_bx_advance_advanceissuerequest", - "community": 52, + "community": 18, "norm_label": "advanceissuerequest" }, { @@ -23320,7 +23350,7 @@ "source_location": "L138", "_origin": "ast", "id": "app_schemas_bx_advance_advanceoffsetrecordout", - "community": 52, + "community": 18, "norm_label": "advanceoffsetrecordout" }, { @@ -23340,7 +23370,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_bx_attachment", - "community": 66, + "community": 14, "norm_label": "attachment.py" }, { @@ -23350,7 +23380,7 @@ "source_location": "L9", "_origin": "ast", "id": "app_schemas_bx_attachment_attachmentout", - "community": 66, + "community": 14, "norm_label": "attachmentout" }, { @@ -23410,7 +23440,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_schemas_bx_common_pagedquery", - "community": 0, + "community": 18, "norm_label": "pagedquery" }, { @@ -23420,7 +23450,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_schemas_bx_common_apiresponse", - "community": 19, + "community": 18, "norm_label": "apiresponse" }, { @@ -23440,7 +23470,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_schemas_bx_common_pagedresponse", - "community": 0, + "community": 18, "norm_label": "pagedresponse" }, { @@ -23620,7 +23650,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimbursedetailout", - "community": 47, + "community": 19, "norm_label": "reimbursedetailout" }, { @@ -23630,7 +23660,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimburseinvoicelinkin", - "community": 15, + "community": 19, "norm_label": "reimburseinvoicelinkin" }, { @@ -23700,7 +23730,7 @@ "source_location": "L102", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimburseapplyupdate", - "community": 19, + "community": 15, "norm_label": "reimburseapplyupdate" }, { @@ -23720,7 +23750,7 @@ "source_location": "L119", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimbursesubmitbody", - "community": 19, + "community": 15, "norm_label": "reimbursesubmitbody" }, { @@ -23730,7 +23760,7 @@ "source_location": "L126", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimburseapplyout", - "community": 19, + "community": 15, "norm_label": "reimburseapplyout" }, { @@ -23740,7 +23770,7 @@ "source_location": "L156", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimburseapprovalcreate", - "community": 19, + "community": 15, "norm_label": "reimburseapprovalcreate" }, { @@ -23780,7 +23810,7 @@ "source_location": "L195", "_origin": "ast", "id": "app_schemas_bx_reimburse_payrequest", - "community": 52, + "community": 18, "norm_label": "payrequest" }, { @@ -23790,7 +23820,7 @@ "source_location": "L202", "_origin": "ast", "id": "app_schemas_bx_reimburse_offsetrequest", - "community": 52, + "community": 18, "norm_label": "offsetrequest" }, { @@ -23830,7 +23860,7 @@ "source_location": "L233", "_origin": "ast", "id": "app_schemas_bx_reimburse_batchoffsetrequest", - "community": 52, + "community": 18, "norm_label": "batchoffsetrequest" }, { @@ -23840,7 +23870,7 @@ "source_location": "L241", "_origin": "ast", "id": "app_schemas_bx_reimburse_reimburseoffsetrecordout", - "community": 52, + "community": 18, "norm_label": "reimburseoffsetrecordout" }, { @@ -23850,7 +23880,7 @@ "source_location": "L254", "_origin": "ast", "id": "app_schemas_bx_reimburse_paymentfinancestatsout", - "community": 52, + "community": 19, "norm_label": "paymentfinancestatsout" }, { @@ -23860,7 +23890,7 @@ "source_location": "L44", "_origin": "ast", "id": "app_schemas_bx_reimburse_rationale_44", - "community": 15, + "community": 19, "norm_label": "\u62a5\u9500\u5355\u52fe\u9009\u7684\u53d1\u7968\u9644\u4ef6(\u540c\u4e00\u53d1\u7968\u53ef\u52fe\u9009\u591a\u4e2a\u9644\u4ef6,\u5404\u5360\u4e00\u6761)\u3002" }, { @@ -23870,7 +23900,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_bx_workflow", - "community": 14, + "community": 64, "norm_label": "workflow.py" }, { @@ -23880,7 +23910,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_schemas_bx_workflow_coerce_optional_id", - "community": 14, + "community": 64, "norm_label": "_coerce_optional_id()" }, { @@ -23890,7 +23920,7 @@ "source_location": "L13", "_origin": "ast", "id": "app_schemas_bx_workflow_workflownodecreate", - "community": 14, + "community": 64, "norm_label": "workflownodecreate" }, { @@ -23900,7 +23930,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_schemas_bx_workflow_workflownodecreate_validate_approver_id", - "community": 14, + "community": 64, "norm_label": ".validate_approver_id()" }, { @@ -23910,7 +23940,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_schemas_bx_workflow_workflownodeout", - "community": 0, + "community": 64, "norm_label": "workflownodeout" }, { @@ -23920,7 +23950,7 @@ "source_location": "L37", "_origin": "ast", "id": "app_schemas_bx_workflow_workflowdefcreate", - "community": 14, + "community": 64, "norm_label": "workflowdefcreate" }, { @@ -23930,7 +23960,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_schemas_bx_workflow_workflowdefupdate", - "community": 14, + "community": 64, "norm_label": "workflowdefupdate" }, { @@ -23940,7 +23970,7 @@ "source_location": "L55", "_origin": "ast", "id": "app_schemas_bx_workflow_workflowdefout", - "community": 14, + "community": 64, "norm_label": "workflowdefout" }, { @@ -24180,7 +24210,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_contact", - "community": 31, + "community": 12, "norm_label": "contact.py" }, { @@ -24200,7 +24230,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_schemas_crm_contact_contactcreatebody", - "community": 31, + "community": 12, "norm_label": "contactcreatebody" }, { @@ -24210,7 +24240,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_schemas_crm_contact_contactupdatebody", - "community": 31, + "community": 12, "norm_label": "contactupdatebody" }, { @@ -24220,7 +24250,7 @@ "source_location": "L71", "_origin": "ast", "id": "app_schemas_crm_contact_contactdeletebody", - "community": 31, + "community": 12, "norm_label": "contactdeletebody" }, { @@ -24230,7 +24260,7 @@ "source_location": "L75", "_origin": "ast", "id": "app_schemas_crm_contact_contactdetailbody", - "community": 0, + "community": 12, "norm_label": "contactdetailbody" }, { @@ -24240,7 +24270,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_schemas_crm_contact_contactbycustomerbody", - "community": 0, + "community": 12, "norm_label": "contactbycustomerbody" }, { @@ -24250,7 +24280,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_schemas_crm_contact_contactsetprimarybody", - "community": 0, + "community": 12, "norm_label": "contactsetprimarybody" }, { @@ -24260,7 +24290,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_contact_rationale_1", - "community": 31, + "community": 12, "norm_label": "crm \u8054\u7cfb\u4eba pydantic schemas" }, { @@ -24710,7 +24740,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_customer", - "community": 0, + "community": 12, "norm_label": "customer.py" }, { @@ -24720,7 +24750,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_schemas_crm_customer_customeroptionsbody", - "community": 99, + "community": 12, "norm_label": "customeroptionsbody" }, { @@ -24750,7 +24780,7 @@ "source_location": "L87", "_origin": "ast", "id": "app_schemas_crm_customer_customercreatebody", - "community": 6, + "community": 7, "norm_label": "customercreatebody" }, { @@ -24760,7 +24790,7 @@ "source_location": "L128", "_origin": "ast", "id": "app_schemas_crm_customer_customercreatebody_forbid_legacy_invoice_fields", - "community": 20, + "community": 50, "norm_label": "._forbid_legacy_invoice_fields()" }, { @@ -24770,7 +24800,7 @@ "source_location": "L153", "_origin": "ast", "id": "app_schemas_crm_customer_customerupdatebody", - "community": 6, + "community": 7, "norm_label": "customerupdatebody" }, { @@ -24780,7 +24810,7 @@ "source_location": "L195", "_origin": "ast", "id": "app_schemas_crm_customer_customerupdatebody_forbid_legacy_invoice_fields", - "community": 20, + "community": 50, "norm_label": "._forbid_legacy_invoice_fields()" }, { @@ -24790,7 +24820,7 @@ "source_location": "L220", "_origin": "ast", "id": "app_schemas_crm_customer_customerdeletebody", - "community": 7, + "community": 12, "norm_label": "customerdeletebody" }, { @@ -24800,7 +24830,7 @@ "source_location": "L228", "_origin": "ast", "id": "app_schemas_crm_customer_customerdetailbody", - "community": 0, + "community": 12, "norm_label": "customerdetailbody" }, { @@ -24810,7 +24840,7 @@ "source_location": "L235", "_origin": "ast", "id": "app_schemas_crm_customer_customertransferbody", - "community": 0, + "community": 12, "norm_label": "customertransferbody" }, { @@ -24820,7 +24850,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_schemas_crm_customer_customerintopoolbody", - "community": 0, + "community": 12, "norm_label": "customerintopoolbody" }, { @@ -24830,7 +24860,7 @@ "source_location": "L257", "_origin": "ast", "id": "app_schemas_crm_customer_customerdealbody", - "community": 0, + "community": 12, "norm_label": "customerdealbody" }, { @@ -24840,7 +24870,7 @@ "source_location": "L269", "_origin": "ast", "id": "app_schemas_crm_customer_customerclaimbody", - "community": 0, + "community": 12, "norm_label": "customerclaimbody" }, { @@ -24850,7 +24880,7 @@ "source_location": "L278", "_origin": "ast", "id": "app_schemas_crm_customer_customerassignpoolbody", - "community": 0, + "community": 12, "norm_label": "customerassignpoolbody" }, { @@ -24860,7 +24890,7 @@ "source_location": "L289", "_origin": "ast", "id": "app_schemas_crm_customer_customercheckduplicatebody", - "community": 0, + "community": 12, "norm_label": "customercheckduplicatebody" }, { @@ -24870,7 +24900,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_customer_rationale_1", - "community": 0, + "community": 12, "norm_label": "crm \u5ba2\u6237\u7ba1\u7406 pydantic schemas" }, { @@ -24880,7 +24910,7 @@ "source_location": "L13", "_origin": "ast", "id": "app_schemas_crm_customer_rationale_13", - "community": 99, + "community": 12, "norm_label": "\u5ba2\u6237\u4e0b\u62c9\u9009\u9879\u8bf7\u6c42\u4f53(\u79df\u6237\u5185\u53ea\u8bfb\u641c\u7d22,\u4e0d\u505a owner \u6570\u636e\u6743\u9650)" }, { @@ -24900,7 +24930,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_customer_follow", - "community": 0, + "community": 7, "norm_label": "customer_follow.py" }, { @@ -24910,7 +24940,7 @@ "source_location": "L8", "_origin": "ast", "id": "app_schemas_crm_customer_follow_customerfollowlistbody", - "community": 0, + "community": 7, "norm_label": "customerfollowlistbody" }, { @@ -24920,7 +24950,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_schemas_crm_customer_follow_customerfollowcreatebody", - "community": 0, + "community": 7, "norm_label": "customerfollowcreatebody" }, { @@ -24930,7 +24960,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_schemas_crm_customer_follow_customerfollowupdatebody", - "community": 0, + "community": 7, "norm_label": "customerfollowupdatebody" }, { @@ -24940,7 +24970,7 @@ "source_location": "L52", "_origin": "ast", "id": "app_schemas_crm_customer_follow_customerfollowdeletebody", - "community": 0, + "community": 7, "norm_label": "customerfollowdeletebody" }, { @@ -24950,7 +24980,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_schemas_crm_customer_follow_customerfollowdetailbody", - "community": 0, + "community": 7, "norm_label": "customerfollowdetailbody" }, { @@ -24960,7 +24990,7 @@ "source_location": "L60", "_origin": "ast", "id": "app_schemas_crm_customer_follow_customerfollowbycustomerbody", - "community": 0, + "community": 7, "norm_label": "customerfollowbycustomerbody" }, { @@ -24970,7 +25000,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_customer_follow_rationale_1", - "community": 0, + "community": 7, "norm_label": "crm \u5ba2\u6237\u8ddf\u8fdb\u8bb0\u5f55 pydantic schemas" }, { @@ -24980,7 +25010,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_customer_pool", - "community": 31, + "community": 105, "norm_label": "customer_pool.py" }, { @@ -24990,7 +25020,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_schemas_crm_customer_pool_poolcustomerlistbody", - "community": 31, + "community": 105, "norm_label": "poolcustomerlistbody" }, { @@ -25000,7 +25030,7 @@ "source_location": "L18", "_origin": "ast", "id": "app_schemas_crm_customer_pool_poolassignbody", - "community": 31, + "community": 105, "norm_label": "poolassignbody" }, { @@ -25010,7 +25040,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_schemas_crm_customer_pool_poolclaimbody", - "community": 31, + "community": 105, "norm_label": "poolclaimbody" }, { @@ -25020,7 +25050,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_schemas_crm_customer_pool_poolrecordlistbody", - "community": 171, + "community": 105, "norm_label": "poolrecordlistbody" }, { @@ -25030,7 +25060,7 @@ "source_location": "L42", "_origin": "ast", "id": "app_schemas_crm_customer_pool_poolrecorddetailbody", - "community": 31, + "community": 105, "norm_label": "poolrecorddetailbody" }, { @@ -25040,7 +25070,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_customer_pool_rationale_1", - "community": 31, + "community": 105, "norm_label": "crm \u5ba2\u6237\u516c\u6d77\u6c60\u8bb0\u5f55 pydantic schemas" }, { @@ -25070,7 +25100,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_schemas_crm_invoice_info_invoiceinfocreatebody", - "community": 7, + "community": 81, "norm_label": "invoiceinfocreatebody" }, { @@ -25080,7 +25110,7 @@ "source_location": "L30", "_origin": "ast", "id": "app_schemas_crm_invoice_info_invoiceinfoupdatebody", - "community": 7, + "community": 81, "norm_label": "invoiceinfoupdatebody" }, { @@ -25100,7 +25130,7 @@ "source_location": "L52", "_origin": "ast", "id": "app_schemas_crm_invoice_info_invoiceinfosetdefaultbody", - "community": 7, + "community": 81, "norm_label": "invoiceinfosetdefaultbody" }, { @@ -25120,7 +25150,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_opportunity", - "community": 31, + "community": 7, "norm_label": "opportunity.py" }, { @@ -25140,7 +25170,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitydetailbody", - "community": 31, + "community": 7, "norm_label": "opportunitydetailbody" }, { @@ -25150,7 +25180,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitycreatebody", - "community": 31, + "community": 7, "norm_label": "opportunitycreatebody" }, { @@ -25160,7 +25190,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityupdatebody", - "community": 31, + "community": 7, "norm_label": "opportunityupdatebody" }, { @@ -25170,7 +25200,7 @@ "source_location": "L63", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitydeletebody", - "community": 31, + "community": 7, "norm_label": "opportunitydeletebody" }, { @@ -25180,7 +25210,7 @@ "source_location": "L69", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityassignbody", - "community": 31, + "community": 7, "norm_label": "opportunityassignbody" }, { @@ -25190,7 +25220,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitychangestagebody", - "community": 31, + "community": 7, "norm_label": "opportunitychangestagebody" }, { @@ -25200,7 +25230,7 @@ "source_location": "L88", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitymarkwonbody", - "community": 31, + "community": 7, "norm_label": "opportunitymarkwonbody" }, { @@ -25210,7 +25240,7 @@ "source_location": "L97", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitymarklostbody", - "community": 31, + "community": 7, "norm_label": "opportunitymarklostbody" }, { @@ -25220,7 +25250,7 @@ "source_location": "L107", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitybatchupdatestagebody", - "community": 31, + "community": 7, "norm_label": "opportunitybatchupdatestagebody" }, { @@ -25230,7 +25260,7 @@ "source_location": "L119", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitybatchupdateexpectdatebody", - "community": 31, + "community": 7, "norm_label": "opportunitybatchupdateexpectdatebody" }, { @@ -25240,7 +25270,7 @@ "source_location": "L129", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunitystageloglistbody", - "community": 31, + "community": 7, "norm_label": "opportunitystageloglistbody" }, { @@ -25270,7 +25300,7 @@ "source_location": "L148", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityfollowlistbody", - "community": 31, + "community": 7, "norm_label": "opportunityfollowlistbody" }, { @@ -25280,7 +25310,7 @@ "source_location": "L156", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityfollowdetailbody", - "community": 31, + "community": 7, "norm_label": "opportunityfollowdetailbody" }, { @@ -25290,7 +25320,7 @@ "source_location": "L162", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityfollowcreatebody", - "community": 31, + "community": 7, "norm_label": "opportunityfollowcreatebody" }, { @@ -25300,7 +25330,7 @@ "source_location": "L176", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityfollowupdatebody", - "community": 31, + "community": 7, "norm_label": "opportunityfollowupdatebody" }, { @@ -25310,7 +25340,7 @@ "source_location": "L180", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityfollowdeletebody", - "community": 31, + "community": 7, "norm_label": "opportunityfollowdeletebody" }, { @@ -25320,7 +25350,7 @@ "source_location": "L186", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductlistbody", - "community": 31, + "community": 7, "norm_label": "opportunityproductlistbody" }, { @@ -25330,7 +25360,7 @@ "source_location": "L195", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductbyopportunitybody", - "community": 31, + "community": 7, "norm_label": "opportunityproductbyopportunitybody" }, { @@ -25340,7 +25370,7 @@ "source_location": "L202", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductdetailbody", - "community": 31, + "community": 7, "norm_label": "opportunityproductdetailbody" }, { @@ -25350,7 +25380,7 @@ "source_location": "L208", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductcreatebody", - "community": 31, + "community": 7, "norm_label": "opportunityproductcreatebody" }, { @@ -25360,7 +25390,7 @@ "source_location": "L225", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductbatchaddbody", - "community": 31, + "community": 7, "norm_label": "opportunityproductbatchaddbody" }, { @@ -25370,7 +25400,7 @@ "source_location": "L232", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductupdatebody", - "community": 31, + "community": 7, "norm_label": "opportunityproductupdatebody" }, { @@ -25380,7 +25410,7 @@ "source_location": "L236", "_origin": "ast", "id": "app_schemas_crm_opportunity_opportunityproductdeletebody", - "community": 31, + "community": 7, "norm_label": "opportunityproductdeletebody" }, { @@ -25390,7 +25420,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_opportunity_rationale_1", - "community": 31, + "community": 7, "norm_label": "crm \u5546\u673a\u7ba1\u7406 pydantic schemas" }, { @@ -25400,7 +25430,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_pool_rule", - "community": 171, + "community": 7, "norm_label": "pool_rule.py" }, { @@ -25410,7 +25440,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolrulelistbody", - "community": 171, + "community": 7, "norm_label": "poolrulelistbody" }, { @@ -25420,7 +25450,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolruledetailbody", - "community": 171, + "community": 7, "norm_label": "poolruledetailbody" }, { @@ -25430,7 +25460,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolruleaddbody", - "community": 171, + "community": 7, "norm_label": "poolruleaddbody" }, { @@ -25440,7 +25470,7 @@ "source_location": "L35", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolruleupdatebody", - "community": 171, + "community": 7, "norm_label": "poolruleupdatebody" }, { @@ -25450,7 +25480,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolruledeletebody", - "community": 171, + "community": 7, "norm_label": "poolruledeletebody" }, { @@ -25460,7 +25490,7 @@ "source_location": "L54", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolruleupdatestatusbody", - "community": 171, + "community": 7, "norm_label": "poolruleupdatestatusbody" }, { @@ -25470,7 +25500,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_schemas_crm_pool_rule_poolruleexecutebody", - "community": 171, + "community": 7, "norm_label": "poolruleexecutebody" }, { @@ -25480,7 +25510,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_pool_rule_rationale_1", - "community": 171, + "community": 7, "norm_label": "crm \u5ba2\u6237\u516c\u6d77\u6c60\u89c4\u5219 pydantic schemas" }, { @@ -25560,7 +25590,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_product", - "community": 7, + "community": 45, "norm_label": "product.py" }, { @@ -25570,7 +25600,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_schemas_crm_product_productcategorycreatebody", - "community": 7, + "community": 45, "norm_label": "productcategorycreatebody" }, { @@ -25580,7 +25610,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_schemas_crm_product_productcategoryupdatebody", - "community": 7, + "community": 45, "norm_label": "productcategoryupdatebody" }, { @@ -25590,7 +25620,7 @@ "source_location": "L41", "_origin": "ast", "id": "app_schemas_crm_product_categorydeletebody", - "community": 7, + "community": 45, "norm_label": "categorydeletebody" }, { @@ -25600,7 +25630,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_schemas_crm_product_productcategorytreebody", - "community": 7, + "community": 45, "norm_label": "productcategorytreebody" }, { @@ -25610,7 +25640,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_schemas_crm_product_productupdatestatusbody", - "community": 7, + "community": 45, "norm_label": "productupdatestatusbody" }, { @@ -25630,7 +25660,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_schemas_crm_product_productbranditem", - "community": 0, + "community": 45, "norm_label": "productbranditem" }, { @@ -25640,7 +25670,7 @@ "source_location": "L90", "_origin": "ast", "id": "app_schemas_crm_product_productaliasitem", - "community": 0, + "community": 45, "norm_label": "productaliasitem" }, { @@ -25650,7 +25680,7 @@ "source_location": "L100", "_origin": "ast", "id": "app_schemas_crm_product_productcreatebody", - "community": 7, + "community": 45, "norm_label": "productcreatebody" }, { @@ -25660,7 +25690,7 @@ "source_location": "L137", "_origin": "ast", "id": "app_schemas_crm_product_productupdatebody", - "community": 7, + "community": 45, "norm_label": "productupdatebody" }, { @@ -25670,7 +25700,7 @@ "source_location": "L175", "_origin": "ast", "id": "app_schemas_crm_product_productdetailbody", - "community": 7, + "community": 45, "norm_label": "productdetailbody" }, { @@ -25680,7 +25710,7 @@ "source_location": "L181", "_origin": "ast", "id": "app_schemas_crm_product_productdeletebody", - "community": 7, + "community": 45, "norm_label": "productdeletebody" }, { @@ -25690,7 +25720,7 @@ "source_location": "L188", "_origin": "ast", "id": "app_schemas_crm_product_productoptionsbody", - "community": 7, + "community": 45, "norm_label": "productoptionsbody" }, { @@ -25700,7 +25730,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_crm_product_rationale_1", - "community": 7, + "community": 45, "norm_label": "crm \u4ea7\u54c1\u6a21\u5757 pydantic schemas" }, { @@ -25710,7 +25740,7 @@ "source_location": "L48", "_origin": "ast", "id": "app_schemas_crm_product_rationale_48", - "community": 7, + "community": 45, "norm_label": "\u4ea7\u54c1\u5206\u7c7b\u6811\u67e5\u8be2(\u5bc6\u6587\u89e3\u5bc6\u540e\u987b\u7528 pydantic \u7ed1\u5b9a,\u88f8 dict=none \u5728\u90e8\u5206\u94fe\u8def\u4e0b\u4f1a\u4e22 body)" }, { @@ -26380,7 +26410,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_db_weighing", - "community": 62, + "community": 20, "norm_label": "weighing.py" }, { @@ -26390,7 +26420,7 @@ "source_location": "L6", "_origin": "ast", "id": "app_schemas_db_weighing_weighingslipbase", - "community": 62, + "community": 20, "norm_label": "weighingslipbase" }, { @@ -26400,7 +26430,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_schemas_db_weighing_weighingslipcreate", - "community": 62, + "community": 20, "norm_label": "weighingslipcreate" }, { @@ -26410,7 +26440,7 @@ "source_location": "L58", "_origin": "ast", "id": "app_schemas_db_weighing_weighingslipupdate", - "community": 62, + "community": 20, "norm_label": "weighingslipupdate" }, { @@ -26420,7 +26450,7 @@ "source_location": "L86", "_origin": "ast", "id": "app_schemas_db_weighing_weighingslipread", - "community": 62, + "community": 20, "norm_label": "weighingslipread" }, { @@ -26430,59 +26460,79 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_duty", - "community": 26, + "community": 66, "norm_label": "duty.py" }, { "label": "DutyAssignmentIn", "file_type": "code", "source_file": "app/schemas/duty.py", - "source_location": "L14", + "source_location": "L13", "_origin": "ast", "id": "app_schemas_duty_dutyassignmentin", - "community": 26, + "community": 66, "norm_label": "dutyassignmentin" }, { "label": "DutySlotSaveIn", "file_type": "code", "source_file": "app/schemas/duty.py", - "source_location": "L20", + "source_location": "L19", "_origin": "ast", "id": "app_schemas_duty_dutyslotsavein", - "community": 26, + "community": 66, "norm_label": "dutyslotsavein" }, + { + "label": "._split_work_plans()", + "file_type": "code", + "source_file": "app/schemas/duty.py", + "source_location": "L31", + "_origin": "ast", + "id": "app_schemas_duty_dutyslotsavein_split_work_plans", + "community": 66, + "norm_label": "._split_work_plans()" + }, { "label": "DutyDaySaveBody", "file_type": "code", "source_file": "app/schemas/duty.py", - "source_location": "L27", + "source_location": "L39", "_origin": "ast", "id": "app_schemas_duty_dutydaysavebody", - "community": 26, + "community": 66, "norm_label": "dutydaysavebody" }, { "label": "DutyLinkBody", "file_type": "code", "source_file": "app/schemas/duty.py", - "source_location": "L33", + "source_location": "L45", "_origin": "ast", "id": "app_schemas_duty_dutylinkbody", - "community": 26, + "community": 66, "norm_label": "dutylinkbody" }, { "label": "DutyGrabBody", "file_type": "code", "source_file": "app/schemas/duty.py", - "source_location": "L37", + "source_location": "L49", "_origin": "ast", "id": "app_schemas_duty_dutygrabbody", - "community": 26, + "community": 3, "norm_label": "dutygrabbody" }, + { + "label": "DutyDictEnsureBody", + "file_type": "code", + "source_file": "app/schemas/duty.py", + "source_location": "L54", + "_origin": "ast", + "id": "app_schemas_duty_dutydictensurebody", + "community": 66, + "norm_label": "dutydictensurebody" + }, { "label": "\u503c\u73ed\u6392\u73ed Pydantic schemas", "file_type": "rationale", @@ -26490,7 +26540,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_duty_rationale_1", - "community": 26, + "community": 66, "norm_label": "\u503c\u73ed\u6392\u73ed pydantic schemas" }, { @@ -26500,7 +26550,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_leave", - "community": 12, + "community": 121, "norm_label": "leave.py" }, { @@ -26510,7 +26560,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_schemas_leave_leavecreate", - "community": 12, + "community": 121, "norm_label": "leavecreate" }, { @@ -26520,7 +26570,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_schemas_leave_leaveupdate", - "community": 12, + "community": 121, "norm_label": "leaveupdate" }, { @@ -26540,7 +26590,7 @@ "source_location": "L39", "_origin": "ast", "id": "app_schemas_leave_config", - "community": 12, + "community": 121, "norm_label": "config" }, { @@ -26550,7 +26600,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_leave_rationale_1", - "community": 12, + "community": 121, "norm_label": "pydantic schemas - \u8bf7\u5047\u7533\u8bf7" }, { @@ -26600,7 +26650,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_menu_favorite", - "community": 44, + "community": 53, "norm_label": "menu_favorite.py" }, { @@ -26610,7 +26660,7 @@ "source_location": "L6", "_origin": "ast", "id": "app_schemas_menu_favorite_menufavoritecreatebody", - "community": 44, + "community": 53, "norm_label": "menufavoritecreatebody" }, { @@ -26620,7 +26670,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_schemas_menu_favorite_menufavoritedeletebody", - "community": 44, + "community": 53, "norm_label": "menufavoritedeletebody" }, { @@ -26630,7 +26680,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_schemas_menu_favorite_menufavoritereorderbody", - "community": 44, + "community": 53, "norm_label": "menufavoritereorderbody" }, { @@ -26640,7 +26690,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_schemas_menu_favorite_rationale_15", - "community": 44, + "community": 53, "norm_label": "\u6536\u85cf\u83dc\u5355\u5b8c\u6574\u6709\u5e8f\u5217\u8868(paths \u987b\u4e0e\u5f53\u524d\u6709\u6548\u6536\u85cf\u96c6\u5408\u4e00\u81f4)" }, { @@ -26660,7 +26710,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_monitor_operlog", - "community": 33, + "community": 71, "norm_label": "operlog.py" }, { @@ -26670,7 +26720,7 @@ "source_location": "L8", "_origin": "ast", "id": "app_schemas_monitor_operlog_operloglistbody", - "community": 33, + "community": 71, "norm_label": "operloglistbody" }, { @@ -26680,7 +26730,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_schemas_monitor_operlog_operlogdetailbody", - "community": 33, + "community": 71, "norm_label": "operlogdetailbody" }, { @@ -26690,7 +26740,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_monitor_operlog_rationale_1", - "community": 33, + "community": 71, "norm_label": "\u64cd\u4f5c\u65e5\u5fd7(\u517c\u5bb9 ruoyi operlog \u89c6\u56fe)" }, { @@ -26700,7 +26750,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_init", - "community": 0, + "community": 115, "norm_label": "__init__.py" }, { @@ -26710,7 +26760,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_init_rationale_1", - "community": 0, + "community": 115, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - pydantic schema" }, { @@ -26730,7 +26780,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_schemas_pl_base_data_carrierbase", - "community": 25, + "community": 115, "norm_label": "carrierbase" }, { @@ -26740,7 +26790,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_schemas_pl_base_data_carrierqualificationbase", - "community": 25, + "community": 115, "norm_label": "carrierqualificationbase" }, { @@ -26750,7 +26800,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_schemas_pl_base_data_carriercreate", - "community": 25, + "community": 115, "norm_label": "carriercreate" }, { @@ -26760,7 +26810,7 @@ "source_location": "L49", "_origin": "ast", "id": "app_schemas_pl_base_data_carrierupdate", - "community": 25, + "community": 115, "norm_label": "carrierupdate" }, { @@ -26770,7 +26820,7 @@ "source_location": "L71", "_origin": "ast", "id": "app_schemas_pl_base_data_carrierauditreject", - "community": 25, + "community": 115, "norm_label": "carrierauditreject" }, { @@ -26780,7 +26830,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_schemas_pl_base_data_carrierread", - "community": 25, + "community": 115, "norm_label": "carrierread" }, { @@ -26790,7 +26840,7 @@ "source_location": "L96", "_origin": "ast", "id": "app_schemas_pl_base_data_carrier_to_read", - "community": 25, + "community": 115, "norm_label": "carrier_to_read()" }, { @@ -26800,7 +26850,7 @@ "source_location": "", "_origin": "ast", "id": "app_schemas_pl_base_data_py_date", - "community": 25, + "community": 115, "norm_label": "date" }, { @@ -26810,7 +26860,7 @@ "source_location": "L132", "_origin": "ast", "id": "app_schemas_pl_base_data_vehiclepersonnelrow", - "community": 119, + "community": 115, "norm_label": "vehiclepersonnelrow" }, { @@ -26830,7 +26880,7 @@ "source_location": "L158", "_origin": "ast", "id": "app_schemas_pl_base_data_certread", - "community": 71, + "community": 115, "norm_label": "certread" }, { @@ -26857,7 +26907,7 @@ "label": "VehicleUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L196", + "source_location": "L197", "_origin": "ast", "id": "app_schemas_pl_base_data_vehicleupdate", "community": 115, @@ -26867,7 +26917,7 @@ "label": "VehicleRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L213", + "source_location": "L214", "_origin": "ast", "id": "app_schemas_pl_base_data_vehicleread", "community": 115, @@ -26877,17 +26927,17 @@ "label": "VehicleDetailRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L228", + "source_location": "L229", "_origin": "ast", "id": "app_schemas_pl_base_data_vehicledetailread", - "community": 109, + "community": 115, "norm_label": "vehicledetailread" }, { "label": "PersonnelBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L239", + "source_location": "L240", "_origin": "ast", "id": "app_schemas_pl_base_data_personnelbase", "community": 115, @@ -26897,7 +26947,7 @@ "label": "PersonnelCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L263", + "source_location": "L264", "_origin": "ast", "id": "app_schemas_pl_base_data_personnelcreate", "community": 115, @@ -26907,7 +26957,7 @@ "label": "PersonnelUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L268", + "source_location": "L269", "_origin": "ast", "id": "app_schemas_pl_base_data_personnelupdate", "community": 115, @@ -26917,27 +26967,27 @@ "label": "PersonnelRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L286", + "source_location": "L287", "_origin": "ast", "id": "app_schemas_pl_base_data_personnelread", - "community": 71, + "community": 115, "norm_label": "personnelread" }, { "label": "PersonnelDetailRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L301", + "source_location": "L302", "_origin": "ast", "id": "app_schemas_pl_base_data_personneldetailread", - "community": 71, + "community": 115, "norm_label": "personneldetailread" }, { "label": "DriverBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L311", + "source_location": "L312", "_origin": "ast", "id": "app_schemas_pl_base_data_driverbase", "community": 115, @@ -26947,7 +26997,7 @@ "label": "DriverCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L324", + "source_location": "L325", "_origin": "ast", "id": "app_schemas_pl_base_data_drivercreate", "community": 115, @@ -26957,7 +27007,7 @@ "label": "DriverUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L328", + "source_location": "L329", "_origin": "ast", "id": "app_schemas_pl_base_data_driverupdate", "community": 115, @@ -26967,7 +27017,7 @@ "label": "DriverRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L342", + "source_location": "L343", "_origin": "ast", "id": "app_schemas_pl_base_data_driverread", "community": 115, @@ -26977,7 +27027,7 @@ "label": "DriverListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L355", + "source_location": "L356", "_origin": "ast", "id": "app_schemas_pl_base_data_driverlistresponse", "community": 115, @@ -26987,7 +27037,7 @@ "label": "VehicleDriverCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L365", + "source_location": "L366", "_origin": "ast", "id": "app_schemas_pl_base_data_vehicledrivercreate", "community": 115, @@ -26997,40 +27047,40 @@ "label": "VehicleDriverRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L372", + "source_location": "L373", "_origin": "ast", "id": "app_schemas_pl_base_data_vehicledriverread", - "community": 0, + "community": 115, "norm_label": "vehicledriverread" }, { "label": "CarrierListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L382", + "source_location": "L383", "_origin": "ast", "id": "app_schemas_pl_base_data_carrierlistresponse", - "community": 25, + "community": 115, "norm_label": "carrierlistresponse" }, { "label": "VehicleListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L387", + "source_location": "L388", "_origin": "ast", "id": "app_schemas_pl_base_data_vehiclelistresponse", - "community": 71, + "community": 115, "norm_label": "vehiclelistresponse" }, { "label": "PersonnelListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L392", + "source_location": "L393", "_origin": "ast", "id": "app_schemas_pl_base_data_personnellistresponse", - "community": 71, + "community": 115, "norm_label": "personnellistresponse" }, { @@ -27050,7 +27100,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_datetime_parse", - "community": 173, + "community": 99, "norm_label": "datetime_parse.py" }, { @@ -27060,7 +27110,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_schemas_pl_datetime_parse_parse_optional_plan_datetime", - "community": 173, + "community": 99, "norm_label": "parse_optional_plan_datetime()" }, { @@ -27070,7 +27120,7 @@ "source_location": "", "_origin": "ast", "id": "app_schemas_pl_datetime_parse_py_datetime", - "community": 173, + "community": 99, "norm_label": "datetime" }, { @@ -27080,7 +27130,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_datetime_parse_rationale_1", - "community": 173, + "community": 99, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u76f8\u5173\u65e5\u671f\u65f6\u95f4\u89e3\u6790:\u524d\u7aef date-picker \u4ec5\u4f20 yyyy-mm-dd\u3002" }, { @@ -27090,7 +27140,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_freight", - "community": 10, + "community": 31, "norm_label": "freight.py" }, { @@ -27100,7 +27150,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementbase", - "community": 10, + "community": 31, "norm_label": "freightsettlementbase" }, { @@ -27110,7 +27160,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementcreate", - "community": 10, + "community": 31, "norm_label": "freightsettlementcreate" }, { @@ -27120,7 +27170,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementcreate_check_ids", - "community": 10, + "community": 50, "norm_label": ".check_ids()" }, { @@ -27130,7 +27180,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementupdate", - "community": 10, + "community": 31, "norm_label": "freightsettlementupdate" }, { @@ -27140,7 +27190,7 @@ "source_location": "L50", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementread", - "community": 10, + "community": 31, "norm_label": "freightsettlementread" }, { @@ -27150,7 +27200,7 @@ "source_location": "L64", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementlistitem", - "community": 10, + "community": 31, "norm_label": "freightsettlementlistitem" }, { @@ -27160,7 +27210,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementtransportread", - "community": 0, + "community": 31, "norm_label": "freightsettlementtransportread" }, { @@ -27170,7 +27220,7 @@ "source_location": "L88", "_origin": "ast", "id": "app_schemas_pl_freight_unsettledplanitem", - "community": 10, + "community": 31, "norm_label": "unsettledplanitem" }, { @@ -27180,7 +27230,7 @@ "source_location": "L108", "_origin": "ast", "id": "app_schemas_pl_freight_unsettledplanlistresponse", - "community": 10, + "community": 31, "norm_label": "unsettledplanlistresponse" }, { @@ -27190,7 +27240,7 @@ "source_location": "L113", "_origin": "ast", "id": "app_schemas_pl_freight_settlementplansummary", - "community": 10, + "community": 31, "norm_label": "settlementplansummary" }, { @@ -27200,7 +27250,7 @@ "source_location": "L122", "_origin": "ast", "id": "app_schemas_pl_freight_settlementapprovalflowitem", - "community": 10, + "community": 31, "norm_label": "settlementapprovalflowitem" }, { @@ -27210,7 +27260,7 @@ "source_location": "L136", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementwithtransports", - "community": 10, + "community": 31, "norm_label": "freightsettlementwithtransports" }, { @@ -27220,7 +27270,7 @@ "source_location": "L154", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementsubmitapprovalbody", - "community": 10, + "community": 31, "norm_label": "freightsettlementsubmitapprovalbody" }, { @@ -27230,7 +27280,7 @@ "source_location": "L161", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementapprovalactionbody", - "community": 10, + "community": 31, "norm_label": "freightsettlementapprovalactionbody" }, { @@ -27240,7 +27290,7 @@ "source_location": "L166", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementdisbursebody", - "community": 10, + "community": 31, "norm_label": "freightsettlementdisbursebody" }, { @@ -27250,7 +27300,7 @@ "source_location": "L179", "_origin": "ast", "id": "app_schemas_pl_freight_remittancevouchercreate", - "community": 0, + "community": 31, "norm_label": "remittancevouchercreate" }, { @@ -27260,7 +27310,7 @@ "source_location": "L188", "_origin": "ast", "id": "app_schemas_pl_freight_remittancevoucherread", - "community": 10, + "community": 31, "norm_label": "remittancevoucherread" }, { @@ -27270,7 +27320,7 @@ "source_location": "L207", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementlistquery", - "community": 0, + "community": 31, "norm_label": "freightsettlementlistquery" }, { @@ -27280,7 +27330,7 @@ "source_location": "L216", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementlistresponse", - "community": 10, + "community": 31, "norm_label": "freightsettlementlistresponse" }, { @@ -27290,7 +27340,7 @@ "source_location": "L221", "_origin": "ast", "id": "app_schemas_pl_freight_freightsettlementbytransportread", - "community": 10, + "community": 31, "norm_label": "freightsettlementbytransportread" }, { @@ -27490,7 +27540,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_io_order", - "community": 45, + "community": 173, "norm_label": "io_order.py" }, { @@ -27520,7 +27570,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_schemas_pl_io_order_ioorderitemread", - "community": 45, + "community": 173, "norm_label": "ioorderitemread" }, { @@ -27530,7 +27580,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_schemas_pl_io_order_ioorderitempatch", - "community": 45, + "community": 173, "norm_label": "ioorderitempatch" }, { @@ -27570,7 +27620,7 @@ "source_location": "L113", "_origin": "ast", "id": "app_schemas_pl_io_order_publicioorderitemfeedback", - "community": 45, + "community": 173, "norm_label": "publicioorderitemfeedback" }, { @@ -27580,7 +27630,7 @@ "source_location": "L120", "_origin": "ast", "id": "app_schemas_pl_io_order_publicioorderfeedback", - "community": 45, + "community": 173, "norm_label": "publicioorderfeedback" }, { @@ -27590,7 +27640,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_io_order_rationale_1", - "community": 45, + "community": 173, "norm_label": "\u5165\u5e93\u5355 / \u51fa\u5e93\u5355 pydantic schemas" }, { @@ -27620,7 +27670,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_paste_recognize", - "community": 64, + "community": 115, "norm_label": "paste_recognize.py" }, { @@ -27630,7 +27680,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_schemas_pl_paste_recognize_conflictaction", - "community": 64, + "community": 115, "norm_label": "conflictaction" }, { @@ -27640,7 +27690,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_schemas_pl_paste_recognize_pastepersonnelin", - "community": 64, + "community": 115, "norm_label": "pastepersonnelin" }, { @@ -27650,7 +27700,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_schemas_pl_paste_recognize_pastevehiclein", - "community": 64, + "community": 115, "norm_label": "pastevehiclein" }, { @@ -27660,7 +27710,7 @@ "source_location": "L34", "_origin": "ast", "id": "app_schemas_pl_paste_recognize_pastecommitbody", - "community": 64, + "community": 115, "norm_label": "pastecommitbody" }, { @@ -27670,7 +27720,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_schemas_pl_paste_recognize_pastecommitresult", - "community": 64, + "community": 115, "norm_label": "pastecommitresult" }, { @@ -27680,7 +27730,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_paste_recognize_rationale_1", - "community": 64, + "community": 115, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 - \u4e09\u65b9\u7c98\u8d34\u8bc6\u522b\u63d0\u4ea4 schema" }, { @@ -27690,7 +27740,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_plan", - "community": 0, + "community": 5, "norm_label": "plan.py" }, { @@ -27700,7 +27750,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_schemas_pl_plan_planproductbase", - "community": 0, + "community": 103, "norm_label": "planproductbase" }, { @@ -27710,7 +27760,7 @@ "source_location": "L55", "_origin": "ast", "id": "app_schemas_pl_plan_planproductcreate", - "community": 5, + "community": 103, "norm_label": "planproductcreate" }, { @@ -27720,7 +27770,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_schemas_pl_plan_planproductupdate", - "community": 0, + "community": 5, "norm_label": "planproductupdate" }, { @@ -27730,7 +27780,7 @@ "source_location": "L81", "_origin": "ast", "id": "app_schemas_pl_plan_planarchivebrandqtyitem", - "community": 0, + "community": 5, "norm_label": "planarchivebrandqtyitem" }, { @@ -27740,7 +27790,7 @@ "source_location": "L88", "_origin": "ast", "id": "app_schemas_pl_plan_planproductread", - "community": 0, + "community": 47, "norm_label": "planproductread" }, { @@ -27750,7 +27800,7 @@ "source_location": "L105", "_origin": "ast", "id": "app_schemas_pl_plan_planbase", - "community": 0, + "community": 5, "norm_label": "planbase" }, { @@ -27760,7 +27810,7 @@ "source_location": "L155", "_origin": "ast", "id": "app_schemas_pl_plan_plancontractlink", - "community": 5, + "community": 47, "norm_label": "plancontractlink" }, { @@ -27770,7 +27820,7 @@ "source_location": "L161", "_origin": "ast", "id": "app_schemas_pl_plan_plancreate", - "community": 0, + "community": 5, "norm_label": "plancreate" }, { @@ -27780,7 +27830,7 @@ "source_location": "L176", "_origin": "ast", "id": "app_schemas_pl_plan_plantransportcreateblock", - "community": 5, + "community": 103, "norm_label": "plantransportcreateblock" }, { @@ -27790,7 +27840,7 @@ "source_location": "L190", "_origin": "ast", "id": "app_schemas_pl_plan_planupdate", - "community": 0, + "community": 5, "norm_label": "planupdate" }, { @@ -27800,7 +27850,7 @@ "source_location": "L239", "_origin": "ast", "id": "app_schemas_pl_plan_hazardcertreadybody", - "community": 0, + "community": 5, "norm_label": "hazardcertreadybody" }, { @@ -27820,7 +27870,7 @@ "source_location": "L278", "_origin": "ast", "id": "app_schemas_pl_plan_planwithproducts", - "community": 5, + "community": 103, "norm_label": "planwithproducts" }, { @@ -27830,7 +27880,7 @@ "source_location": "L282", "_origin": "ast", "id": "app_schemas_pl_plan_planinboundsliptemplatesave", - "community": 0, + "community": 5, "norm_label": "planinboundsliptemplatesave" }, { @@ -27840,7 +27890,7 @@ "source_location": "L287", "_origin": "ast", "id": "app_schemas_pl_plan_plandeliverysliptemplatesave", - "community": 0, + "community": 5, "norm_label": "plandeliverysliptemplatesave" }, { @@ -27850,7 +27900,7 @@ "source_location": "L294", "_origin": "ast", "id": "app_schemas_pl_plan_plansubpacksliptemplatesave", - "community": 0, + "community": 5, "norm_label": "plansubpacksliptemplatesave" }, { @@ -27860,7 +27910,7 @@ "source_location": "L306", "_origin": "ast", "id": "app_schemas_pl_plan_createfromcontractrequest", - "community": 0, + "community": 5, "norm_label": "createfromcontractrequest" }, { @@ -27870,7 +27920,7 @@ "source_location": "L317", "_origin": "ast", "id": "app_schemas_pl_plan_plancreatefull", - "community": 0, + "community": 5, "norm_label": "plancreatefull" }, { @@ -27880,7 +27930,7 @@ "source_location": "L328", "_origin": "ast", "id": "app_schemas_pl_plan_planlistquery", - "community": 0, + "community": 5, "norm_label": "planlistquery" }, { @@ -27890,7 +27940,7 @@ "source_location": "L353", "_origin": "ast", "id": "app_schemas_pl_plan_planproductcertitem", - "community": 0, + "community": 5, "norm_label": "planproductcertitem" }, { @@ -27900,7 +27950,7 @@ "source_location": "L361", "_origin": "ast", "id": "app_schemas_pl_plan_planproductcertsupdate", - "community": 0, + "community": 5, "norm_label": "planproductcertsupdate" }, { @@ -27910,7 +27960,7 @@ "source_location": "L366", "_origin": "ast", "id": "app_schemas_pl_plan_planarchiveproductitem", - "community": 5, + "community": 103, "norm_label": "planarchiveproductitem" }, { @@ -27920,7 +27970,7 @@ "source_location": "L373", "_origin": "ast", "id": "app_schemas_pl_plan_planarchivefreightblock", - "community": 0, + "community": 103, "norm_label": "planarchivefreightblock" }, { @@ -27930,7 +27980,7 @@ "source_location": "L384", "_origin": "ast", "id": "app_schemas_pl_plan_planarchivebody", - "community": 0, + "community": 5, "norm_label": "planarchivebody" }, { @@ -27940,7 +27990,7 @@ "source_location": "L390", "_origin": "ast", "id": "app_schemas_pl_plan_plandriverfeedbackproductitem", - "community": 0, + "community": 5, "norm_label": "plandriverfeedbackproductitem" }, { @@ -27950,7 +28000,7 @@ "source_location": "L397", "_origin": "ast", "id": "app_schemas_pl_plan_plandriverfeedbackupdatebody", - "community": 5, + "community": 103, "norm_label": "plandriverfeedbackupdatebody" }, { @@ -27960,7 +28010,7 @@ "source_location": "L406", "_origin": "ast", "id": "app_schemas_pl_plan_plansitefeedbackupdatebody", - "community": 5, + "community": 103, "norm_label": "plansitefeedbackupdatebody" }, { @@ -27970,9 +28020,39 @@ "source_location": "L419", "_origin": "ast", "id": "app_schemas_pl_plan_planlistresponse", - "community": 0, + "community": 5, "norm_label": "planlistresponse" }, + { + "label": "PlanSideContractsUpdateBody", + "file_type": "code", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L424", + "_origin": "ast", + "id": "app_schemas_pl_plan_plansidecontractsupdatebody", + "community": 5, + "norm_label": "plansidecontractsupdatebody" + }, + { + "label": "PlanContractGapRead", + "file_type": "code", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L429", + "_origin": "ast", + "id": "app_schemas_pl_plan_plancontractgapread", + "community": 47, + "norm_label": "plancontractgapread" + }, + { + "label": "PlanContractGapListResponse", + "file_type": "code", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L448", + "_origin": "ast", + "id": "app_schemas_pl_plan_plancontractgaplistresponse", + "community": 5, + "norm_label": "plancontractgaplistresponse" + }, { "label": "resource_snapshot.py", "file_type": "code", @@ -27980,7 +28060,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot", - "community": 53, + "community": 79, "norm_label": "resource_snapshot.py" }, { @@ -27990,7 +28070,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_snapshotcertread", - "community": 53, + "community": 115, "norm_label": "snapshotcertread" }, { @@ -28000,7 +28080,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_snapshotpersonnelrow", - "community": 53, + "community": 79, "norm_label": "snapshotpersonnelrow" }, { @@ -28010,7 +28090,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_transportresourcesnapshot", - "community": 53, + "community": 103, "norm_label": "transportresourcesnapshot" }, { @@ -28020,7 +28100,7 @@ "source_location": "L65", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_parse_resource_snapshot", - "community": 53, + "community": 79, "norm_label": "parse_resource_snapshot()" }, { @@ -28030,7 +28110,7 @@ "source_location": "", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_py_any", - "community": 53, + "community": 79, "norm_label": "any" }, { @@ -28040,7 +28120,7 @@ "source_location": "L81", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", - "community": 0, + "community": 173, "norm_label": "planresourcesnapshotmixin" }, { @@ -28050,7 +28130,7 @@ "source_location": "L91", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin_coerce_resource_snapshot", - "community": 53, + "community": 79, "norm_label": "._coerce_resource_snapshot()" }, { @@ -28060,7 +28140,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_rationale_1", - "community": 53, + "community": 79, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 - \u5b89\u6392\u8fd0\u8f93\u65f6\u8f66\u8f86/\u4eba\u5458/\u8bc1\u4ef6\u8d44\u6e90\u5feb\u7167 schema" }, { @@ -28070,7 +28150,7 @@ "source_location": "L66", "_origin": "ast", "id": "app_schemas_pl_resource_snapshot_rationale_66", - "community": 53, + "community": 79, "norm_label": "\u4ece orm \u6587\u672c\u5217\u6216 dict \u89e3\u6790\u5feb\u7167\u3002" }, { @@ -28240,7 +28320,7 @@ "source_location": "L228", "_origin": "ast", "id": "app_schemas_pl_transport_publictransportplanproductread", - "community": 174, + "community": 173, "norm_label": "publictransportplanproductread" }, { @@ -28250,7 +28330,7 @@ "source_location": "L246", "_origin": "ast", "id": "app_schemas_pl_transport_publictransportpersonnelread", - "community": 174, + "community": 173, "norm_label": "publictransportpersonnelread" }, { @@ -28260,7 +28340,7 @@ "source_location": "L253", "_origin": "ast", "id": "app_schemas_pl_transport_publictransportpageread", - "community": 174, + "community": 173, "norm_label": "publictransportpageread" }, { @@ -28270,7 +28350,7 @@ "source_location": "L286", "_origin": "ast", "id": "app_schemas_pl_transport_publictransportsitepageread", - "community": 174, + "community": 173, "norm_label": "publictransportsitepageread" }, { @@ -28330,7 +28410,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_schemas_pl_transport_address", - "community": 58, + "community": 51, "norm_label": "transport_address.py" }, { @@ -28340,7 +28420,7 @@ "source_location": "L9", "_origin": "ast", "id": "app_schemas_pl_transport_address_transportaddressbase", - "community": 58, + "community": 51, "norm_label": "transportaddressbase" }, { @@ -28350,7 +28430,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_schemas_pl_transport_address_transportaddresscreate", - "community": 58, + "community": 51, "norm_label": "transportaddresscreate" }, { @@ -28360,7 +28440,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_schemas_pl_transport_address_transportaddresscreate_validate_coordinates", - "community": 58, + "community": 50, "norm_label": ".validate_coordinates()" }, { @@ -28370,7 +28450,7 @@ "source_location": "L30", "_origin": "ast", "id": "app_schemas_pl_transport_address_transportaddressupdate", - "community": 58, + "community": 51, "norm_label": "transportaddressupdate" }, { @@ -28380,7 +28460,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_schemas_pl_transport_address_transportaddressread", - "community": 58, + "community": 51, "norm_label": "transportaddressread" }, { @@ -28390,7 +28470,7 @@ "source_location": "L57", "_origin": "ast", "id": "app_schemas_pl_transport_address_transportaddresslistresponse", - "community": 58, + "community": 51, "norm_label": "transportaddresslistresponse" }, { @@ -28560,7 +28640,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_schemas_pl_vehicle_recharge_vehiclerechargeapplycreate_validate_recharge_type", - "community": 16, + "community": 50, "norm_label": ".validate_recharge_type()" }, { @@ -28620,7 +28700,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_schemas_pl_vehicle_recharge_vehiclerechargerecordcreate_validate_recharge_type", - "community": 16, + "community": 50, "norm_label": ".validate_recharge_type()" }, { @@ -28780,7 +28860,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_schemas_pl_vehicle_urea_vehicleureaapplylistresponse", - "community": 51, + "community": 11, "norm_label": "vehicleureaapplylistresponse" }, { @@ -28850,7 +28930,7 @@ "source_location": "L144", "_origin": "ast", "id": "app_schemas_pl_vehicle_urea_vehicleureadisburseboardlistresponse", - "community": 51, + "community": 11, "norm_label": "vehicleureadisburseboardlistresponse" }, { @@ -29120,7 +29200,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_advance", - "community": 41, + "community": 14, "norm_label": "advance.py" }, { @@ -29130,7 +29210,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_services_bx_advance_advanceservice", - "community": 41, + "community": 10, "norm_label": "advanceservice" }, { @@ -29140,7 +29220,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_tenant_no", - "community": 41, + "community": 10, "norm_label": "._tenant_no()" }, { @@ -29150,7 +29230,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_advance_py_session", - "community": 41, + "community": 10, "norm_label": "session" }, { @@ -29160,7 +29240,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_get_by_id", - "community": 41, + "community": 10, "norm_label": ".get_by_id()" }, { @@ -29170,7 +29250,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_get_paged", - "community": 41, + "community": 10, "norm_label": ".get_paged()" }, { @@ -29180,7 +29260,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_advance_py_any", - "community": 41, + "community": 10, "norm_label": "any" }, { @@ -29190,7 +29270,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_create", - "community": 41, + "community": 10, "norm_label": ".create()" }, { @@ -29200,7 +29280,7 @@ "source_location": "L76", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_update", - "community": 41, + "community": 10, "norm_label": ".update()" }, { @@ -29210,7 +29290,7 @@ "source_location": "L95", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_soft_delete", - "community": 41, + "community": 10, "norm_label": ".soft_delete()" }, { @@ -29220,7 +29300,7 @@ "source_location": "L102", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_pending_approval", - "community": 41, + "community": 10, "norm_label": ".pending_approval()" }, { @@ -29230,7 +29310,7 @@ "source_location": "L163", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_approved_by_me", - "community": 41, + "community": 10, "norm_label": ".approved_by_me()" }, { @@ -29240,7 +29320,7 @@ "source_location": "L219", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_workflow_nodes", - "community": 41, + "community": 10, "norm_label": "._workflow_nodes()" }, { @@ -29250,7 +29330,7 @@ "source_location": "L232", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_submit", - "community": 41, + "community": 10, "norm_label": ".submit()" }, { @@ -29260,7 +29340,7 @@ "source_location": "L249", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_approve", - "community": 41, + "community": 10, "norm_label": ".approve()" }, { @@ -29270,7 +29350,7 @@ "source_location": "L294", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_reject", - "community": 41, + "community": 10, "norm_label": ".reject()" }, { @@ -29280,7 +29360,7 @@ "source_location": "L331", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_approval_record_dict", - "community": 41, + "community": 10, "norm_label": "._approval_record_dict()" }, { @@ -29290,7 +29370,7 @@ "source_location": "L344", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_latest_approval_per_node", - "community": 41, + "community": 10, "norm_label": "._latest_approval_per_node()" }, { @@ -29300,7 +29380,7 @@ "source_location": "L361", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_query_approvals", - "community": 41, + "community": 10, "norm_label": "._query_approvals()" }, { @@ -29310,7 +29390,7 @@ "source_location": "L373", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_get_approvals", - "community": 41, + "community": 10, "norm_label": ".get_approvals()" }, { @@ -29320,7 +29400,7 @@ "source_location": "L409", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_get_approval_history", - "community": 41, + "community": 10, "norm_label": ".get_approval_history()" }, { @@ -29330,7 +29410,7 @@ "source_location": "L428", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_global_status_counts", - "community": 41, + "community": 10, "norm_label": ".global_status_counts()" }, { @@ -29340,7 +29420,7 @@ "source_location": "L437", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_my_apply_base", - "community": 41, + "community": 10, "norm_label": "._my_apply_base()" }, { @@ -29350,7 +29430,7 @@ "source_location": "L449", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_my_apply_stats", - "community": 41, + "community": 10, "norm_label": ".my_apply_stats()" }, { @@ -29360,7 +29440,7 @@ "source_location": "L529", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_pending_approval_stats", - "community": 41, + "community": 10, "norm_label": ".pending_approval_stats()" }, { @@ -29370,7 +29450,7 @@ "source_location": "L560", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_offset_amount_map", - "community": 52, + "community": 18, "norm_label": ".offset_amount_map()" }, { @@ -29380,7 +29460,7 @@ "source_location": "L579", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_issue", - "community": 41, + "community": 10, "norm_label": ".issue()" }, { @@ -29390,7 +29470,7 @@ "source_location": "L604", "_origin": "ast", "id": "app_services_bx_advance_advanceservice_finance_issue_stats", - "community": 41, + "community": 10, "norm_label": ".finance_issue_stats()" }, { @@ -29400,7 +29480,7 @@ "source_location": "L347", "_origin": "ast", "id": "app_services_bx_advance_rationale_347", - "community": 41, + "community": 10, "norm_label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6,\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002" }, { @@ -29410,7 +29490,7 @@ "source_location": "L412", "_origin": "ast", "id": "app_services_bx_advance_rationale_412", - "community": 41, + "community": 10, "norm_label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c,\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217,\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002" }, { @@ -29420,7 +29500,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_approval_cycle", - "community": 41, + "community": 14, "norm_label": "approval_cycle.py" }, { @@ -29430,7 +29510,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_services_bx_approval_cycle_filter_current_cycle_approvals", - "community": 41, + "community": 14, "norm_label": "filter_current_cycle_approvals()" }, { @@ -29440,7 +29520,7 @@ "source_location": "", "_origin": "ast", "id": "t", - "community": 41, + "community": 14, "norm_label": "t" }, { @@ -29450,7 +29530,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_approval_cycle_rationale_1", - "community": 41, + "community": 14, "norm_label": "\u5ba1\u6279\u8f6e\u6b21\u8fc7\u6ee4 \u2014 \u9a73\u56de\u540e\u91cd\u65b0\u63d0\u4ea4\u65f6,\u8fdb\u5ea6\u63a5\u53e3\u4ec5\u5c55\u793a\u5f53\u524d\u8f6e\u6b21\u3002" }, { @@ -29460,7 +29540,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_services_bx_approval_cycle_rationale_17", - "community": 41, + "community": 14, "norm_label": "\u5ba1\u6279\u8fdb\u5ea6\u4ec5\u5c55\u793a\u5f53\u524d\u8f6e\u6b21;\u5b8c\u6574\u5386\u53f2\u7531 get_approval_history \u8fd4\u56de\u3002" }, { @@ -29470,7 +29550,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_attachment", - "community": 66, + "community": 14, "norm_label": "attachment.py" }, { @@ -29480,7 +29560,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice", - "community": 66, + "community": 14, "norm_label": "attachmentservice" }, { @@ -29490,7 +29570,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_tenant_no", - "community": 66, + "community": 14, "norm_label": "._tenant_no()" }, { @@ -29500,7 +29580,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_attachment_py_session", - "community": 66, + "community": 14, "norm_label": "session" }, { @@ -29510,7 +29590,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_get_by_id", - "community": 66, + "community": 14, "norm_label": ".get_by_id()" }, { @@ -29520,7 +29600,7 @@ "source_location": "L34", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_create", - "community": 66, + "community": 14, "norm_label": ".create()" }, { @@ -29530,7 +29610,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_soft_delete", - "community": 66, + "community": 14, "norm_label": ".soft_delete()" }, { @@ -29540,7 +29620,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_get_by_biz", - "community": 66, + "community": 14, "norm_label": ".get_by_biz()" }, { @@ -29550,7 +29630,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_bind_biz", - "community": 66, + "community": 14, "norm_label": ".bind_biz()" }, { @@ -29560,7 +29640,7 @@ "source_location": "L106", "_origin": "ast", "id": "app_services_bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", - "community": 66, + "community": 14, "norm_label": ".count_invoice_attach_by_biz_ids()" }, { @@ -29570,7 +29650,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_base", - "community": 66, + "community": 14, "norm_label": "base.py" }, { @@ -29670,7 +29750,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_base_rationale_1", - "community": 66, + "community": 14, "norm_label": "\u62a5\u9500\u6a21\u5757 service \u57fa\u7c7b \u2014 \u79df\u6237\u9694\u79bb + uuid + \u8f6f\u5220\u9664\u3002" }, { @@ -29680,7 +29760,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_expense_item", - "community": 13, + "community": 14, "norm_label": "expense_item.py" }, { @@ -29780,7 +29860,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_invoice", - "community": 50, + "community": 14, "norm_label": "invoice.py" }, { @@ -30010,7 +30090,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_invoice_ledger", - "community": 50, + "community": 43, "norm_label": "invoice_ledger.py" }, { @@ -30020,7 +30100,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_services_bx_invoice_ledger_summarize_entries", - "community": 50, + "community": 43, "norm_label": "summarize_entries()" }, { @@ -30030,7 +30110,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_invoice_ledger_py_any", - "community": 50, + "community": 43, "norm_label": "any" }, { @@ -30040,7 +30120,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_invoice_ledger_py_decimal", - "community": 50, + "community": 43, "norm_label": "decimal" }, { @@ -30050,7 +30130,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_services_bx_invoice_ledger_should_skip_release", - "community": 50, + "community": 43, "norm_label": "should_skip_release()" }, { @@ -30060,7 +30140,7 @@ "source_location": "L53", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice", - "community": 50, + "community": 43, "norm_label": "invoiceledgerservice" }, { @@ -30070,7 +30150,7 @@ "source_location": "L55", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_list_entries", - "community": 50, + "community": 43, "norm_label": ".list_entries()" }, { @@ -30080,7 +30160,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_invoice_ledger_py_session", - "community": 50, + "community": 43, "norm_label": "session" }, { @@ -30090,7 +30170,7 @@ "source_location": "L70", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_calc_summary", - "community": 50, + "community": 43, "norm_label": ".calc_summary()" }, { @@ -30100,7 +30180,7 @@ "source_location": "L76", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_lock_summary", - "community": 50, + "community": 43, "norm_label": "._lock_summary()" }, { @@ -30110,7 +30190,7 @@ "source_location": "L123", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_refresh_summary", - "community": 50, + "community": 43, "norm_label": ".refresh_summary()" }, { @@ -30120,7 +30200,7 @@ "source_location": "L170", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_add_entry", - "community": 50, + "community": 43, "norm_label": ".add_entry()" }, { @@ -30130,7 +30210,7 @@ "source_location": "L206", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_debit_reimburse", - "community": 50, + "community": 43, "norm_label": ".debit_reimburse()" }, { @@ -30140,7 +30220,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_release_reimburse", - "community": 50, + "community": 43, "norm_label": ".release_reimburse()" }, { @@ -30150,7 +30230,7 @@ "source_location": "L308", "_origin": "ast", "id": "app_services_bx_invoice_ledger_invoiceledgerservice_assert_can_delete_invoice", - "community": 50, + "community": 43, "norm_label": ".assert_can_delete_invoice()" }, { @@ -30160,7 +30240,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_reimburse", - "community": 47, + "community": 14, "norm_label": "reimburse.py" }, { @@ -30490,7 +30570,7 @@ "source_location": "L1010", "_origin": "ast", "id": "app_services_bx_reimburse_reimburseservice_out_rows_with_attachment_counts", - "community": 19, + "community": 15, "norm_label": ".out_rows_with_attachment_counts()" }, { @@ -30500,7 +30580,7 @@ "source_location": "L1040", "_origin": "ast", "id": "app_services_bx_reimburse_reimburseservice_out_one_with_attachment_counts", - "community": 19, + "community": 15, "norm_label": ".out_one_with_attachment_counts()" }, { @@ -30510,7 +30590,7 @@ "source_location": "L1046", "_origin": "ast", "id": "app_services_bx_reimburse_reimburseservice_build_apply_out_with_details", - "community": 19, + "community": 15, "norm_label": ".build_apply_out_with_details()" }, { @@ -31100,7 +31180,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice", - "community": 14, + "community": 64, "norm_label": "workflowservice" }, { @@ -31110,7 +31190,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_tenant_no", - "community": 14, + "community": 64, "norm_label": "._tenant_no()" }, { @@ -31120,7 +31200,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_workflow_py_session", - "community": 14, + "community": 64, "norm_label": "session" }, { @@ -31130,7 +31210,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_get_by_id", - "community": 14, + "community": 64, "norm_label": ".get_by_id()" }, { @@ -31140,7 +31220,7 @@ "source_location": "L45", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_get_paged", - "community": 14, + "community": 64, "norm_label": ".get_paged()" }, { @@ -31150,7 +31230,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_create", - "community": 14, + "community": 64, "norm_label": ".create()" }, { @@ -31160,7 +31240,7 @@ "source_location": "L76", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_update", - "community": 14, + "community": 64, "norm_label": ".update()" }, { @@ -31170,7 +31250,7 @@ "source_location": "L96", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_soft_delete", - "community": 14, + "community": 64, "norm_label": ".soft_delete()" }, { @@ -31180,7 +31260,7 @@ "source_location": "L110", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_get_by_biz_type", - "community": 14, + "community": 64, "norm_label": ".get_by_biz_type()" }, { @@ -31190,7 +31270,7 @@ "source_location": "L122", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_ensure_by_biz_type", - "community": 14, + "community": 64, "norm_label": ".ensure_by_biz_type()" }, { @@ -31200,7 +31280,7 @@ "source_location": "L153", "_origin": "ast", "id": "app_services_bx_workflow_workflowservice_save_nodes", - "community": 14, + "community": 64, "norm_label": ".save_nodes()" }, { @@ -31210,7 +31290,7 @@ "source_location": "L128", "_origin": "ast", "id": "app_services_bx_workflow_rationale_128", - "community": 14, + "community": 64, "norm_label": "\u6309\u4e1a\u52a1\u7c7b\u578b\u83b7\u53d6\u5de5\u4f5c\u6d41;\u5df2\u77e5\u7c7b\u578b\u4e0d\u5b58\u5728\u65f6\u81ea\u52a8\u521b\u5efa\u7a7a\u5b9a\u4e49(\u65e0\u8282\u70b9)\u3002" }, { @@ -31220,7 +31300,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_data_scope", - "community": 66, + "community": 14, "norm_label": "bx_data_scope.py" }, { @@ -31230,7 +31310,7 @@ "source_location": "L13", "_origin": "ast", "id": "app_services_bx_data_scope_apply_bx_scope", - "community": 41, + "community": 14, "norm_label": "apply_bx_scope()" }, { @@ -31240,7 +31320,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_bx_data_scope_py_session", - "community": 66, + "community": 14, "norm_label": "session" }, { @@ -31250,7 +31330,7 @@ "source_location": "L18", "_origin": "ast", "id": "app_services_bx_data_scope_assert_bx_row_in_scope", - "community": 66, + "community": 14, "norm_label": "assert_bx_row_in_scope()" }, { @@ -31260,7 +31340,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_services_bx_data_scope_assert_bx_biz_in_scope", - "community": 66, + "community": 14, "norm_label": "assert_bx_biz_in_scope()" }, { @@ -31270,7 +31350,7 @@ "source_location": "L63", "_origin": "ast", "id": "app_services_bx_data_scope_assert_bx_attachment_biz_in_scope", - "community": 66, + "community": 14, "norm_label": "assert_bx_attachment_biz_in_scope()" }, { @@ -31280,7 +31360,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_bx_data_scope_rationale_1", - "community": 66, + "community": 14, "norm_label": "bx \u6a21\u5757\u6570\u636e\u6743\u9650\u8f85\u52a9(create_by / create_dept_id)\u3002" }, { @@ -31290,7 +31370,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_services_bx_data_scope_rationale_36", - "community": 66, + "community": 14, "norm_label": "\u9644\u4ef6\u4e0b\u8f7d/\u5220\u9664/\u7ed1\u5b9a\u524d\u6821\u9a8c\u5173\u8054\u4e1a\u52a1\u5355\u5728\u6570\u636e\u6743\u9650\u5185\u3002" }, { @@ -31430,7 +31510,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_crm_supplier_hazard", - "community": 55, + "community": 21, "norm_label": "crm_supplier_hazard.py" }, { @@ -31440,7 +31520,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_services_crm_supplier_hazard_product_allowed", - "community": 55, + "community": 102, "norm_label": "product_allowed()" }, { @@ -31450,7 +31530,7 @@ "source_location": "L33", "_origin": "ast", "id": "app_services_crm_supplier_hazard_get_supplier_hazard_flags", - "community": 55, + "community": 21, "norm_label": "get_supplier_hazard_flags()" }, { @@ -31460,7 +31540,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_crm_supplier_hazard_py_session", - "community": 55, + "community": 118, "norm_label": "session" }, { @@ -31470,7 +31550,7 @@ "source_location": "L50", "_origin": "ast", "id": "app_services_crm_supplier_hazard_enrich_products_with_hazard_flags", - "community": 55, + "community": 118, "norm_label": "enrich_products_with_hazard_flags()" }, { @@ -31480,7 +31560,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_crm_supplier_hazard_py_any", - "community": 55, + "community": 118, "norm_label": "any" }, { @@ -31490,7 +31570,7 @@ "source_location": "L83", "_origin": "ast", "id": "app_services_crm_supplier_hazard_assert_products_allowed_for_supplier", - "community": 55, + "community": 118, "norm_label": "assert_products_allowed_for_supplier()" }, { @@ -31500,7 +31580,7 @@ "source_location": "L54", "_origin": "ast", "id": "app_services_crm_supplier_hazard_rationale_54", - "community": 55, + "community": 118, "norm_label": "\u6279\u91cf\u56de\u586b\u660e\u7ec6\u884c istoxic/isexplosive(\u6765\u81ea\u4ea7\u54c1\u4e3b\u6570\u636e,\u4f9b\u524d\u7aef\u5207\u6362\u4e3b\u4f53\u5254\u9664)\u3002" }, { @@ -31700,7 +31780,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_services_db_mappers_fmt_date", - "community": 111, + "community": 24, "norm_label": "fmt_date()" }, { @@ -31710,7 +31790,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_db_mappers_py_date", - "community": 111, + "community": 24, "norm_label": "date" }, { @@ -31790,7 +31870,7 @@ "source_location": "L121", "_origin": "ast", "id": "app_services_db_mappers_is_empty_inventory_date", - "community": 111, + "community": 24, "norm_label": "is_empty_inventory_date()" }, { @@ -31800,7 +31880,7 @@ "source_location": "L125", "_origin": "ast", "id": "app_services_db_mappers_inventory_date_to_api", - "community": 111, + "community": 24, "norm_label": "inventory_date_to_api()" }, { @@ -31830,7 +31910,7 @@ "source_location": "L205", "_origin": "ast", "id": "app_services_db_mappers_weighing_to_read", - "community": 62, + "community": 20, "norm_label": "weighing_to_read()" }, { @@ -31840,7 +31920,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_services_db_mappers_datetime_end_of_day", - "community": 62, + "community": 24, "norm_label": "datetime_end_of_day()" }, { @@ -31930,7 +32010,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_db_product_helpers", - "community": 80, + "community": 62, "norm_label": "product_helpers.py" }, { @@ -31940,7 +32020,7 @@ "source_location": "L13", "_origin": "ast", "id": "app_services_db_product_helpers_productsnapshot", - "community": 80, + "community": 62, "norm_label": "productsnapshot" }, { @@ -31950,7 +32030,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_services_db_product_helpers_resolve_crm_product", - "community": 80, + "community": 62, "norm_label": "resolve_crm_product()" }, { @@ -31960,7 +32040,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_db_product_helpers_py_session", - "community": 80, + "community": 62, "norm_label": "session" }, { @@ -31970,7 +32050,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_services_db_product_helpers_apply_product_snapshot_to_plan", - "community": 80, + "community": 62, "norm_label": "apply_product_snapshot_to_plan()" }, { @@ -31990,7 +32070,7 @@ "source_location": "L73", "_origin": "ast", "id": "app_services_db_product_helpers_apply_product_snapshot_to_weighing", - "community": 62, + "community": 20, "norm_label": "apply_product_snapshot_to_weighing()" }, { @@ -32000,7 +32080,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_db_product_helpers_rationale_1", - "community": 80, + "community": 62, "norm_label": "\u5730\u78c5\u6a21\u5757 \u2014 crm \u4ea7\u54c1\u89e3\u6790\u4e0e\u5feb\u7167\u5199\u5165\u3002" }, { @@ -32010,7 +32090,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_services_db_product_helpers_rationale_26", - "community": 80, + "community": 62, "norm_label": "\u6821\u9a8c crm \u4ea7\u54c1\u5e76\u8fd4\u56de\u540d\u79f0/\u89c4\u683c\u5feb\u7167\u3002\u65b0\u5efa\u5355\u636e product_id \u5fc5\u586b\u3002 require_on_shelf=false \u7528\u4e8e\u8fd0\u8f93\u8ba1\u5212\u8054\u52a8\u5730\u78c5\u7b49\u5386" }, { @@ -32020,7 +32100,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_db_weighing_logic", - "community": 62, + "community": 20, "norm_label": "weighing_logic.py" }, { @@ -32030,7 +32110,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_services_db_weighing_logic_has_weight_time", - "community": 62, + "community": 20, "norm_label": "_has_weight_time()" }, { @@ -32040,7 +32120,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_db_weighing_logic_py_datetime", - "community": 62, + "community": 20, "norm_label": "datetime" }, { @@ -32050,7 +32130,7 @@ "source_location": "L20", "_origin": "ast", "id": "app_services_db_weighing_logic_process_weighing_business_logic", - "community": 62, + "community": 20, "norm_label": "process_weighing_business_logic()" }, { @@ -32060,7 +32140,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_db_weighing_logic_py_session", - "community": 62, + "community": 20, "norm_label": "session" }, { @@ -32070,7 +32150,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_db_weighing_logic_rationale_1", - "community": 62, + "community": 20, "norm_label": "\u5730\u78c5\u5355\u8054\u52a8\u4e1a\u52a1\u903b\u8f91 \u2014 \u8fc1\u79fb\u81ea simple-dibang-xiaoshou weighing._process_weighing_business_logic" }, { @@ -32080,7 +32160,7 @@ "source_location": "L21", "_origin": "ast", "id": "app_services_db_weighing_logic_rationale_21", - "community": 62, + "community": 20, "norm_label": "\u5904\u7406\u5730\u78c5\u5355\u7684\u4e1a\u52a1\u903b\u8f91: 1. \u66f4\u65b0\u8ba1\u5212\u5355\u7684\u5df2\u6267\u884c\u91cf(\u5355\u4f4d:kg) 2. \u66f4\u65b0\u51fa\u5165\u5e93\u5355\u7684\u72b6\u6001 3. \u91cd\u65b0\u8ba1\u7b97\u5730\u78c5\u5355\u7684 executed_q" }, { @@ -32147,7 +32227,7 @@ "label": "DutyBizError", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L32", + "source_location": "L35", "_origin": "ast", "id": "app_services_duty_schedule_dutybizerror", "community": 26, @@ -32160,24 +32240,124 @@ "source_location": "", "_origin": "ast", "id": "valueerror", - "community": 20, + "community": 50, "norm_label": "valueerror" }, + { + "label": "parse_hhmm()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L39", + "_origin": "ast", + "id": "app_services_duty_schedule_parse_hhmm", + "community": 44, + "norm_label": "parse_hhmm()" + }, + { + "label": "time", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "time", + "community": 44, + "norm_label": "time" + }, + { + "label": "format_hhmm()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L52", + "_origin": "ast", + "id": "app_services_duty_schedule_format_hhmm", + "community": 44, + "norm_label": "format_hhmm()" + }, + { + "label": "format_time_label()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L58", + "_origin": "ast", + "id": "app_services_duty_schedule_format_time_label", + "community": 44, + "norm_label": "format_time_label()" + }, + { + "label": "split_work_plans()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L69", + "_origin": "ast", + "id": "app_services_duty_schedule_split_work_plans", + "community": 44, + "norm_label": "split_work_plans()" + }, + { + "label": "join_work_plans()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L75", + "_origin": "ast", + "id": "app_services_duty_schedule_join_work_plans", + "community": 44, + "norm_label": "join_work_plans()" + }, + { + "label": "build_dict_value_from_label()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L80", + "_origin": "ast", + "id": "app_services_duty_schedule_build_dict_value_from_label", + "community": 44, + "norm_label": "build_dict_value_from_label()" + }, + { + "label": "ensure_dict_data()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L94", + "_origin": "ast", + "id": "app_services_duty_schedule_ensure_dict_data", + "community": 44, + "norm_label": "ensure_dict_data()" + }, + { + "label": "Session", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "app_services_duty_schedule_py_session", + "community": 26, + "norm_label": "session" + }, + { + "label": "_load_dict_label_map()", + "file_type": "code", + "source_file": "app/services/duty_schedule.py", + "source_location": "L161", + "_origin": "ast", + "id": "app_services_duty_schedule_load_dict_label_map", + "community": 26, + "norm_label": "_load_dict_label_map()" + }, { "label": "normalize_person_name()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L36", + "source_location": "L174", "_origin": "ast", "id": "app_services_duty_schedule_normalize_person_name", - "community": 26, + "community": 44, "norm_label": "normalize_person_name()" }, { "label": "new_access_token()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L45", + "source_location": "L183", "_origin": "ast", "id": "app_services_duty_schedule_new_access_token", "community": 26, @@ -32187,7 +32367,7 @@ "label": "build_public_url()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L49", + "source_location": "L187", "_origin": "ast", "id": "app_services_duty_schedule_build_public_url", "community": 26, @@ -32197,7 +32377,7 @@ "label": "_assignment_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L54", + "source_location": "L192", "_origin": "ast", "id": "app_services_duty_schedule_assignment_dict", "community": 26, @@ -32217,7 +32397,7 @@ "label": "_slot_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L63", + "source_location": "L201", "_origin": "ast", "id": "app_services_duty_schedule_slot_dict", "community": 26, @@ -32227,7 +32407,7 @@ "label": "_day_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L76", + "source_location": "L214", "_origin": "ast", "id": "app_services_duty_schedule_day_dict", "community": 26, @@ -32237,22 +32417,12 @@ "label": "_load_day_by_date()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L96", + "source_location": "L234", "_origin": "ast", "id": "app_services_duty_schedule_load_day_by_date", "community": 26, "norm_label": "_load_day_by_date()" }, - { - "label": "Session", - "file_type": "code", - "source_file": "", - "source_location": "", - "_origin": "ast", - "id": "app_services_duty_schedule_py_session", - "community": 26, - "norm_label": "session" - }, { "label": "date", "file_type": "code", @@ -32267,7 +32437,7 @@ "label": "_load_day_by_id()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L108", + "source_location": "L246", "_origin": "ast", "id": "app_services_duty_schedule_load_day_by_id", "community": 26, @@ -32277,7 +32447,7 @@ "label": "_load_slots()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L116", + "source_location": "L254", "_origin": "ast", "id": "app_services_duty_schedule_load_slots", "community": 26, @@ -32287,7 +32457,7 @@ "label": "_load_assignments_for_slots()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L124", + "source_location": "L262", "_origin": "ast", "id": "app_services_duty_schedule_load_assignments_for_slots", "community": 26, @@ -32297,7 +32467,7 @@ "label": "_serialize_day()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L140", + "source_location": "L278", "_origin": "ast", "id": "app_services_duty_schedule_serialize_day", "community": 26, @@ -32307,7 +32477,7 @@ "label": "empty_day_skeleton()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L146", + "source_location": "L284", "_origin": "ast", "id": "app_services_duty_schedule_empty_day_skeleton", "community": 26, @@ -32317,7 +32487,7 @@ "label": "get_month_summary()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L157", + "source_location": "L295", "_origin": "ast", "id": "app_services_duty_schedule_get_month_summary", "community": 26, @@ -32327,7 +32497,7 @@ "label": "get_day_detail()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L180", + "source_location": "L318", "_origin": "ast", "id": "app_services_duty_schedule_get_day_detail", "community": 26, @@ -32337,7 +32507,7 @@ "label": "soft_delete_assignment()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L187", + "source_location": "L325", "_origin": "ast", "id": "app_services_duty_schedule_soft_delete_assignment", "community": 26, @@ -32347,7 +32517,7 @@ "label": "set_link_status()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L207", + "source_location": "L345", "_origin": "ast", "id": "app_services_duty_schedule_set_link_status", "community": 26, @@ -32357,7 +32527,7 @@ "label": "_count_active_assignments()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L223", + "source_location": "L361", "_origin": "ast", "id": "app_services_duty_schedule_count_active_assignments", "community": 26, @@ -32367,7 +32537,7 @@ "label": "save_day()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L231", + "source_location": "L369", "_origin": "ast", "id": "app_services_duty_schedule_save_day", "community": 26, @@ -32377,27 +32547,27 @@ "label": "resolve_duty_staff_role_id()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L395", + "source_location": "L533", "_origin": "ast", "id": "app_services_duty_schedule_resolve_duty_staff_role_id", - "community": 26, + "community": 44, "norm_label": "resolve_duty_staff_role_id()" }, { "label": "list_duty_staff_users()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L421", + "source_location": "L559", "_origin": "ast", "id": "app_services_duty_schedule_list_duty_staff_users", - "community": 26, + "community": 44, "norm_label": "list_duty_staff_users()" }, { "label": "assert_user_is_duty_staff()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L458", + "source_location": "L596", "_origin": "ast", "id": "app_services_duty_schedule_assert_user_is_duty_staff", "community": 26, @@ -32407,7 +32577,7 @@ "label": "_list_public_users()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L491", + "source_location": "L629", "_origin": "ast", "id": "app_services_duty_schedule_list_public_users", "community": 26, @@ -32417,7 +32587,7 @@ "label": "_resolve_grab_user()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L495", + "source_location": "L633", "_origin": "ast", "id": "app_services_duty_schedule_resolve_grab_user", "community": 26, @@ -32427,7 +32597,7 @@ "label": "get_public_page()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L515", + "source_location": "L653", "_origin": "ast", "id": "app_services_duty_schedule_get_public_page", "community": 26, @@ -32437,10 +32607,10 @@ "label": "grab()", "file_type": "code", "source_file": "app/services/duty_schedule.py", - "source_location": "L536", + "source_location": "L674", "_origin": "ast", "id": "app_services_duty_schedule_grab", - "community": 26, + "community": 44, "norm_label": "grab()" }, { @@ -32457,20 +32627,20 @@ "label": "\u6309\u56fa\u5b9a id \u67e5\u627e\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\uff1b\u627e\u4e0d\u5230\u518d\u6309\u89d2\u8272\u540d\u515c\u5e95\u3002", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", - "source_location": "L396", + "source_location": "L534", "_origin": "ast", - "id": "app_services_duty_schedule_rationale_396", - "community": 26, + "id": "app_services_duty_schedule_rationale_534", + "community": 44, "norm_label": "\u6309\u56fa\u5b9a id \u67e5\u627e\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272;\u627e\u4e0d\u5230\u518d\u6309\u89d2\u8272\u540d\u515c\u5e95\u3002" }, { "label": "\u672c\u79df\u6237\u542f\u7528\u4e14\u7ed1\u5b9a\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\u7684\u7528\u6237\uff08\u516c\u5f00\u9875 users / \u7ba1\u7406\u7aef options\uff09\u3002", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", - "source_location": "L422", + "source_location": "L560", "_origin": "ast", - "id": "app_services_duty_schedule_rationale_422", - "community": 26, + "id": "app_services_duty_schedule_rationale_560", + "community": 44, "norm_label": "\u672c\u79df\u6237\u542f\u7528\u4e14\u7ed1\u5b9a\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\u7684\u7528\u6237(\u516c\u5f00\u9875 users / \u7ba1\u7406\u7aef options)\u3002" }, { @@ -32480,7 +32650,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_brand_archive", - "community": 17, + "community": 80, "norm_label": "pl_brand_archive.py" }, { @@ -32490,7 +32660,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", - "community": 17, + "community": 80, "norm_label": "load_brand_qtys_by_plan_product_ids()" }, { @@ -32500,7 +32670,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_brand_archive_py_session", - "community": 17, + "community": 80, "norm_label": "session" }, { @@ -32510,7 +32680,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_brand_archive_py_any", - "community": 17, + "community": 80, "norm_label": "any" }, { @@ -32520,7 +32690,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_services_pl_brand_archive_validate_brand_qty_rows", - "community": 17, + "community": 80, "norm_label": "validate_brand_qty_rows()" }, { @@ -32530,7 +32700,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_brand_archive_py_decimal", - "community": 17, + "community": 80, "norm_label": "decimal" }, { @@ -32540,7 +32710,7 @@ "source_location": "L64", "_origin": "ast", "id": "app_services_pl_brand_archive_persist_plan_product_brand_qtys", - "community": 17, + "community": 80, "norm_label": "persist_plan_product_brand_qtys()" }, { @@ -32550,7 +32720,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_services_pl_brand_archive_rationale_17", - "community": 17, + "community": 80, "norm_label": "\u6309\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6 id \u6279\u91cf\u52a0\u8f7d\u5f52\u6863\u54c1\u724c\u6570\u91cf(brandid/brandname/qty)\u3002" }, { @@ -32560,7 +32730,7 @@ "source_location": "L75", "_origin": "ast", "id": "app_services_pl_brand_archive_rationale_75", - "community": 17, + "community": 80, "norm_label": "\u8f6f\u5220\u65e7\u54c1\u724c\u91cf\u884c\u540e\u6309\u5f52\u6863\u7ed3\u679c\u63d2\u5165;\u65e0\u54c1\u724c\u7ea6\u5b9a\u5219\u53ea\u8f6f\u5220\u4e0d\u63d2\u5165\u3002" }, { @@ -32590,7 +32760,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_services_pl_carrier_service_carrier_qualification_complete", - "community": 76, + "community": 115, "norm_label": "carrier_qualification_complete()" }, { @@ -32600,7 +32770,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_services_pl_carrier_service_carrier_agreement_expired", - "community": 76, + "community": 115, "norm_label": "carrier_agreement_expired()" }, { @@ -32640,7 +32810,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_services_pl_carrier_service_assert_carrier_eligible_for_transport", - "community": 173, + "community": 76, "norm_label": "assert_carrier_eligible_for_transport()" }, { @@ -32650,7 +32820,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_services_pl_carrier_service_normalize_carrier_urls", - "community": 25, + "community": 115, "norm_label": "normalize_carrier_urls()" }, { @@ -32683,11 +32853,41 @@ "community": 119, "norm_label": "pl_cert_required_service.py" }, + { + "label": "is_huolala_trailer_no()", + "file_type": "code", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L37", + "_origin": "ast", + "id": "app_services_pl_cert_required_service_is_huolala_trailer_no", + "community": 119, + "norm_label": "is_huolala_trailer_no()" + }, + { + "label": "should_show_trailer_cert_slots()", + "file_type": "code", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L41", + "_origin": "ast", + "id": "app_services_pl_cert_required_service_should_show_trailer_cert_slots", + "community": 119, + "norm_label": "should_show_trailer_cert_slots()" + }, + { + "label": "should_require_trailer_certs()", + "file_type": "code", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L46", + "_origin": "ast", + "id": "app_services_pl_cert_required_service_should_require_trailer_certs", + "community": 119, + "norm_label": "should_require_trailer_certs()" + }, { "label": "match_required_cert_name()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L35", + "source_location": "L52", "_origin": "ast", "id": "app_services_pl_cert_required_service_match_required_cert_name", "community": 119, @@ -32697,7 +32897,7 @@ "label": "_cert_row_complete()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L44", + "source_location": "L61", "_origin": "ast", "id": "app_services_pl_cert_required_service_cert_row_complete", "community": 119, @@ -32707,7 +32907,7 @@ "label": "_find_cert_for_required()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L60", + "source_location": "L77", "_origin": "ast", "id": "app_services_pl_cert_required_service_find_cert_for_required", "community": 119, @@ -32717,7 +32917,7 @@ "label": "_missing_field_labels()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L80", + "source_location": "L97", "_origin": "ast", "id": "app_services_pl_cert_required_service_missing_field_labels", "community": 119, @@ -32727,7 +32927,7 @@ "label": "collect_required_cert_errors()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L99", + "source_location": "L116", "_origin": "ast", "id": "app_services_pl_cert_required_service_collect_required_cert_errors", "community": 119, @@ -32737,7 +32937,7 @@ "label": "get_required_personnel_cert_names()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L124", + "source_location": "L141", "_origin": "ast", "id": "app_services_pl_cert_required_service_get_required_personnel_cert_names", "community": 119, @@ -32747,7 +32947,7 @@ "label": "validate_personnel_type_role_compat()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L135", + "source_location": "L152", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_personnel_type_role_compat", "community": 119, @@ -32757,7 +32957,7 @@ "label": "validate_personnel_required_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L146", + "source_location": "L163", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_personnel_required_certs", "community": 119, @@ -32767,7 +32967,7 @@ "label": "validate_self_vehicle_required_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L170", + "source_location": "L187", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "community": 119, @@ -32777,7 +32977,7 @@ "label": "validate_carrier_vehicle_required_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L194", + "source_location": "L211", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "community": 119, @@ -32787,7 +32987,7 @@ "label": "validate_vehicle_personnel_affiliation()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L218", + "source_location": "L221", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "community": 119, @@ -32807,7 +33007,7 @@ "label": "validate_vehicle_personnel_cert_links()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L252", + "source_location": "L255", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "community": 119, @@ -32817,12 +33017,22 @@ "label": "validate_vehicle_save_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L291", + "source_location": "L294", "_origin": "ast", "id": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "community": 119, "norm_label": "validate_vehicle_save_certs()" }, + { + "label": "\u4e09\u65b9\u8f66\u8f86\u8bc1\u4ef6\u4e0d\u5f3a\u5236\uff1b\u4fdd\u7559\u51fd\u6570\u4f9b\u517c\u5bb9\u8c03\u7528\uff0c\u6052\u4e3a\u901a\u8fc7\u3002", + "file_type": "rationale", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L216", + "_origin": "ast", + "id": "app_services_pl_cert_required_service_rationale_216", + "community": 119, + "norm_label": "\u4e09\u65b9\u8f66\u8f86\u8bc1\u4ef6\u4e0d\u5f3a\u5236;\u4fdd\u7559\u51fd\u6570\u4f9b\u517c\u5bb9\u8c03\u7528,\u6052\u4e3a\u901a\u8fc7\u3002" + }, { "label": "pl_cert_service.py", "file_type": "code", @@ -32830,7 +33040,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_cert_service", - "community": 71, + "community": 115, "norm_label": "pl_cert_service.py" }, { @@ -32840,7 +33050,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_services_pl_cert_service_list_owner_certs", - "community": 71, + "community": 115, "norm_label": "list_owner_certs()" }, { @@ -32850,7 +33060,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_cert_service_py_session", - "community": 71, + "community": 115, "norm_label": "session" }, { @@ -32860,7 +33070,7 @@ "source_location": "L30", "_origin": "ast", "id": "app_services_pl_cert_service_list_owner_certs_batch", - "community": 71, + "community": 115, "norm_label": "list_owner_certs_batch()" }, { @@ -32870,7 +33080,7 @@ "source_location": "L52", "_origin": "ast", "id": "app_services_pl_cert_service_certs_to_read", - "community": 71, + "community": 115, "norm_label": "certs_to_read()" }, { @@ -32880,7 +33090,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_services_pl_cert_service_normalize_cert_row", - "community": 71, + "community": 115, "norm_label": "_normalize_cert_row()" }, { @@ -32890,7 +33100,7 @@ "source_location": "L80", "_origin": "ast", "id": "app_services_pl_cert_service_save_owner_certs", - "community": 71, + "community": 115, "norm_label": "save_owner_certs()" }, { @@ -32900,7 +33110,7 @@ "source_location": "L138", "_origin": "ast", "id": "app_services_pl_cert_service_nearest_expire_date", - "community": 71, + "community": 115, "norm_label": "nearest_expire_date()" }, { @@ -32910,7 +33120,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_cert_service_py_date", - "community": 71, + "community": 115, "norm_label": "date" }, { @@ -32920,7 +33130,7 @@ "source_location": "L156", "_origin": "ast", "id": "app_services_pl_cert_service_resolve_owner_label", - "community": 71, + "community": 115, "norm_label": "_resolve_owner_label()" }, { @@ -32930,7 +33140,7 @@ "source_location": "L183", "_origin": "ast", "id": "app_services_pl_cert_service_scan_cert_expiry", - "community": 0, + "community": 115, "norm_label": "scan_cert_expiry()" }, { @@ -32940,7 +33150,7 @@ "source_location": "L90", "_origin": "ast", "id": "app_services_pl_cert_service_rationale_90", - "community": 71, + "community": 115, "norm_label": "\u6309 cert_id upsert;\u672a\u51fa\u73b0\u5728\u5217\u8868\u4e2d\u7684\u65e7\u8bc1\u8f6f\u5220\u3002" }, { @@ -32950,7 +33160,7 @@ "source_location": "L184", "_origin": "ast", "id": "app_services_pl_cert_service_rationale_184", - "community": 0, + "community": 115, "norm_label": "\u626b\u63cf pl_cert \u751f\u6210\u5230\u671f\u63d0\u9192,\u8fd4\u56de\u65b0\u5efa\u6761\u6570\u3002" }, { @@ -32970,7 +33180,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_services_pl_data_scope_apply_pl_scope", - "community": 79, + "community": 0, "norm_label": "apply_pl_scope()" }, { @@ -32980,7 +33190,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_data_scope_py_session", - "community": 79, + "community": 0, "norm_label": "session" }, { @@ -33020,7 +33230,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_dibanginventorylinkresult", - "community": 145, + "community": 61, "norm_label": "dibanginventorylinkresult" }, { @@ -33030,7 +33240,7 @@ "source_location": "L36", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_resolve_partner_company", - "community": 145, + "community": 103, "norm_label": "resolve_partner_company()" }, { @@ -33100,7 +33310,7 @@ "source_location": "L91", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_plan_type_to_business_type", - "community": 145, + "community": 61, "norm_label": "_plan_type_to_business_type()" }, { @@ -33110,7 +33320,7 @@ "source_location": "L99", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_product_quantity", - "community": 145, + "community": 103, "norm_label": "_product_quantity()" }, { @@ -33180,7 +33390,7 @@ "source_location": "L203", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_create_db_plan", - "community": 188, + "community": 61, "norm_label": "_create_db_plan()" }, { @@ -33220,7 +33430,7 @@ "source_location": "L384", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_sync_transport_inventory_links", - "community": 145, + "community": 61, "norm_label": "_sync_transport_inventory_links()" }, { @@ -33230,7 +33440,7 @@ "source_location": "L485", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_sync_dibang_for_transport", - "community": 145, + "community": 173, "norm_label": "sync_dibang_for_transport()" }, { @@ -33240,7 +33450,7 @@ "source_location": "L37", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_rationale_37", - "community": 145, + "community": 103, "norm_label": "\u6309\u8fd0\u8f93\u8ba1\u5212\u5355\u636e\u7c7b\u578b\u89e3\u6790\u5730\u78c5\u5f80\u6765\u5355\u4f4d(\u4e0d\u533a\u5206 crm \u5408\u540c\u7c7b\u578b)\u3002 - \u5165\u5e93\u5355 inbound:\u4f9b\u65b9 \u2192 party_a,\u5176\u6b21 supplier_nam" }, { @@ -33270,7 +33480,7 @@ "source_location": "L495", "_origin": "ast", "id": "app_services_pl_dibang_bridge_service_rationale_495", - "community": 145, + "community": 173, "norm_label": "\u52fe\u9009\u300c\u751f\u6210\u5730\u78c5\u5355\u300d:\u6309\u4ea7\u54c1\u751f\u6210/\u590d\u7528\u5730\u78c5\u8ba1\u5212,\u5e76\u521b\u5efa\u5173\u8054\u51fa\u5165\u5e93\u5355\u3002" }, { @@ -33280,7 +33490,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty", - "community": 17, + "community": 41, "norm_label": "pl_feedback_brand_qty.py" }, { @@ -33290,7 +33500,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_format_brand_qty_summary", - "community": 17, + "community": 41, "norm_label": "format_brand_qty_summary()" }, { @@ -33300,7 +33510,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_require_brand_qtys_if_needed", - "community": 17, + "community": 41, "norm_label": "require_brand_qtys_if_needed()" }, { @@ -33310,7 +33520,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_py_decimal", - "community": 17, + "community": 41, "norm_label": "decimal" }, { @@ -33320,7 +33530,7 @@ "source_location": "L46", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_persist_io_item_brand_qtys", - "community": 17, + "community": 41, "norm_label": "persist_io_item_brand_qtys()" }, { @@ -33330,7 +33540,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_py_session", - "community": 17, + "community": 41, "norm_label": "session" }, { @@ -33340,7 +33550,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_py_any", - "community": 17, + "community": 41, "norm_label": "any" }, { @@ -33350,7 +33560,7 @@ "source_location": "L98", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_dict_field", - "community": 17, + "community": 41, "norm_label": "_dict_field()" }, { @@ -33360,7 +33570,7 @@ "source_location": "L105", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_persist_transport_product_feedback", - "community": 17, + "community": 41, "norm_label": "persist_transport_product_feedback()" }, { @@ -33370,7 +33580,7 @@ "source_location": "L222", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_load_transport_driver_product_feedbacks", - "community": 17, + "community": 41, "norm_label": "load_transport_driver_product_feedbacks()" }, { @@ -33380,7 +33590,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_rationale_1", - "community": 17, + "community": 41, "norm_label": "\u73b0\u573a\u5165\u51fa\u5e93\u660e\u7ec6\u4e0e\u8fd0\u8f93\u56de\u4f20\u7684\u54c1\u724c\u6570\u91cf\u6821\u9a8c\u4e0e\u6301\u4e45\u5316" }, { @@ -33390,7 +33600,7 @@ "source_location": "L228", "_origin": "ast", "id": "app_services_pl_feedback_brand_qty_rationale_228", - "community": 17, + "community": 41, "norm_label": "\u7ba1\u7406\u7aef\u8bfb\u8fd0\u8f93\u5355\u65f6\u9644\u53f8\u673a\u6309\u4ea7\u54c1\u56de\u4f20\u53ca\u54c1\u724c\u6458\u8981\u3002" }, { @@ -33920,7 +34130,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_internal_customer", - "community": 103, + "community": 47, "norm_label": "pl_internal_customer.py" }, { @@ -33930,7 +34140,7 @@ "source_location": "L12", "_origin": "ast", "id": "app_services_pl_internal_customer_is_internal_customer_name", - "community": 103, + "community": 47, "norm_label": "is_internal_customer_name()" }, { @@ -33940,7 +34150,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_internal_customer_rationale_1", - "community": 103, + "community": 47, "norm_label": "\u8fd0\u8f93\u8ba1\u5212:\u5185\u7f6e\u5c71\u5ce1/\u4e91\u680b\u5ba2\u6237\u5224\u5b9a(\u5408\u540c\u53ef\u514d)" }, { @@ -33990,7 +34200,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_inventory_service", - "community": 17, + "community": 80, "norm_label": "pl_inventory_service.py" }, { @@ -34000,7 +34210,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_services_pl_inventory_service_qty_delta_for_plan", - "community": 17, + "community": 80, "norm_label": "qty_delta_for_plan()" }, { @@ -34010,7 +34220,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_inventory_service_py_decimal", - "community": 17, + "community": 80, "norm_label": "decimal" }, { @@ -34020,7 +34230,7 @@ "source_location": "L31", "_origin": "ast", "id": "app_services_pl_inventory_service_get_or_create_inventory", - "community": 17, + "community": 80, "norm_label": "get_or_create_inventory()" }, { @@ -34030,7 +34240,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_inventory_service_py_session", - "community": 17, + "community": 80, "norm_label": "session" }, { @@ -34040,7 +34250,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_services_pl_inventory_service_apply_brand_stock_change", - "community": 17, + "community": 80, "norm_label": "apply_brand_stock_change()" }, { @@ -34050,7 +34260,7 @@ "source_location": "L139", "_origin": "ast", "id": "app_services_pl_inventory_service_reverse_plan_inventory_postings", - "community": 17, + "community": 80, "norm_label": "reverse_plan_inventory_postings()" }, { @@ -34060,7 +34270,7 @@ "source_location": "L178", "_origin": "ast", "id": "app_services_pl_inventory_service_apply_archive_inventory_for_plan", - "community": 17, + "community": 80, "norm_label": "apply_archive_inventory_for_plan()" }, { @@ -34070,7 +34280,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_inventory_service_rationale_1", - "community": 17, + "community": 80, "norm_label": "\u8ba1\u5212\u5f52\u6863\u6309\u4ea7\u54c1+\u54c1\u724c\u5199\u5165\u5e93\u5b58\u53f0\u8d26\u4e0e\u6d41\u6c34\u3002 \u76f4\u9500\u5355 (direct) \u9996\u671f\u4e0d\u8bb0\u8d26;\u5165\u5e93\u589e\u52a0\u3001\u51fa\u5e93\u6263\u51cf(\u5141\u8bb8\u8d1f\u5e93\u5b58,\u4e0d\u505a\u4e0d\u8db3\u62e6\u622a)\u3002 \u8c03\u6574\u5f52\u6863\u65f6\u5148\u6309 plan_i" }, { @@ -34080,7 +34290,7 @@ "source_location": "L146", "_origin": "ast", "id": "app_services_pl_inventory_service_rationale_146", - "community": 17, + "community": 80, "norm_label": "\u51b2\u9500\u8be5\u8ba1\u5212\u5df2\u4ea7\u751f\u7684\u5e93\u5b58\u6d41\u6c34(\u8c03\u6574\u5f52\u6863\u524d\u8c03\u7528)\u3002" }, { @@ -34090,7 +34300,7 @@ "source_location": "L186", "_origin": "ast", "id": "app_services_pl_inventory_service_rationale_186", - "community": 17, + "community": 80, "norm_label": "\u5f52\u6863\u540e\u6309\u54c1\u724c\u91cf(\u6216\u65e0\u54c1\u724c actual_qty)\u843d\u8d26;\u5148\u51b2\u9500\u65e7\u6d41\u6c34\u518d\u91cd\u8bb0\u3002" }, { @@ -34210,7 +34420,7 @@ "source_location": "L247", "_origin": "ast", "id": "app_services_pl_io_order_service_void_io_orders_for_plan", - "community": 173, + "community": 145, "norm_label": "void_io_orders_for_plan()" }, { @@ -34240,7 +34450,7 @@ "source_location": "L301", "_origin": "ast", "id": "app_services_pl_io_order_service_parse_feedback_images", - "community": 45, + "community": 145, "norm_label": "parse_feedback_images()" }, { @@ -34280,7 +34490,7 @@ "source_location": "", "_origin": "ast", "id": "orderitem", - "community": 145, + "community": 91, "norm_label": "orderitem" }, { @@ -34290,7 +34500,7 @@ "source_location": "L416", "_origin": "ast", "id": "app_services_pl_io_order_service_apply_site_feedback", - "community": 45, + "community": 91, "norm_label": "apply_site_feedback()" }, { @@ -34430,17 +34640,17 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_menu_badge_service", - "community": 79, + "community": 0, "norm_label": "pl_menu_badge_service.py" }, { "label": "_count_pending_applies()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L44", + "source_location": "L46", "_origin": "ast", "id": "app_services_pl_menu_badge_service_count_pending_applies", - "community": 79, + "community": 0, "norm_label": "_count_pending_applies()" }, { @@ -34450,67 +34660,77 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_menu_badge_service_py_session", - "community": 79, + "community": 0, "norm_label": "session" }, { "label": "count_document_reminder_expired_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L54", + "source_location": "L56", "_origin": "ast", "id": "app_services_pl_menu_badge_service_count_document_reminder_expired_pending", - "community": 79, + "community": 0, "norm_label": "count_document_reminder_expired_pending()" }, { "label": "count_freight_approval_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L67", + "source_location": "L69", "_origin": "ast", "id": "app_services_pl_menu_badge_service_count_freight_approval_pending", - "community": 79, + "community": 0, "norm_label": "count_freight_approval_pending()" }, { "label": "count_plan_cert_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L86", + "source_location": "L88", "_origin": "ast", "id": "app_services_pl_menu_badge_service_count_plan_cert_pending", - "community": 79, + "community": 0, "norm_label": "count_plan_cert_pending()" }, { "label": "count_plan_archive_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L120", + "source_location": "L122", "_origin": "ast", "id": "app_services_pl_menu_badge_service_count_plan_archive_pending", - "community": 79, + "community": 0, "norm_label": "count_plan_archive_pending()" }, + { + "label": "count_plan_contract_gaps()", + "file_type": "code", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L133", + "_origin": "ast", + "id": "app_services_pl_menu_badge_service_count_plan_contract_gaps", + "community": 0, + "norm_label": "count_plan_contract_gaps()" + }, { "label": "count_freight_disburse_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L131", + "source_location": "L146", "_origin": "ast", "id": "app_services_pl_menu_badge_service_count_freight_disburse_pending", - "community": 79, + "community": 0, "norm_label": "count_freight_disburse_pending()" }, { "label": "build_menu_badge_counts()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L141", + "source_location": "L156", "_origin": "ast", "id": "app_services_pl_menu_badge_service_build_menu_badge_counts", - "community": 79, + "community": 0, "norm_label": "build_menu_badge_counts()" }, { @@ -34730,7 +34950,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_paste_recognize_service", - "community": 64, + "community": 115, "norm_label": "pl_paste_recognize_service.py" }, { @@ -34740,7 +34960,7 @@ "source_location": "L22", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_conflict_map", - "community": 64, + "community": 115, "norm_label": "_conflict_map()" }, { @@ -34750,7 +34970,7 @@ "source_location": "L34", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_find_personnel_by_id_card", - "community": 64, + "community": 115, "norm_label": "_find_personnel_by_id_card()" }, { @@ -34760,7 +34980,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_py_session", - "community": 64, + "community": 115, "norm_label": "session" }, { @@ -34770,7 +34990,7 @@ "source_location": "L51", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_find_vehicle_by_plate", - "community": 64, + "community": 115, "norm_label": "_find_vehicle_by_plate()" }, { @@ -34780,7 +35000,7 @@ "source_location": "L68", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_get_personnel", - "community": 64, + "community": 115, "norm_label": "_get_personnel()" }, { @@ -34790,7 +35010,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_get_vehicle", - "community": 109, + "community": 115, "norm_label": "_get_vehicle()" }, { @@ -34800,7 +35020,7 @@ "source_location": "L100", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_resolve_personnel", - "community": 64, + "community": 115, "norm_label": "_resolve_personnel()" }, { @@ -34810,17 +35030,17 @@ "source_location": "L154", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_resolve_vehicle", - "community": 64, + "community": 115, "norm_label": "_resolve_vehicle()" }, { "label": "commit_paste_recognize()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L222", + "source_location": "L229", "_origin": "ast", "id": "app_services_pl_paste_recognize_service_commit_paste_recognize", - "community": 64, + "community": 115, "norm_label": "commit_paste_recognize()" }, { @@ -34830,7 +35050,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_personnel_service", - "community": 109, + "community": 115, "norm_label": "pl_personnel_service.py" }, { @@ -34840,7 +35060,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_services_pl_personnel_service_upsert_personnel", - "community": 109, + "community": 115, "norm_label": "upsert_personnel()" }, { @@ -34850,7 +35070,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_personnel_service_py_session", - "community": 109, + "community": 115, "norm_label": "session" }, { @@ -34860,7 +35080,7 @@ "source_location": "L92", "_origin": "ast", "id": "app_services_pl_personnel_service_save_vehicle_personnel", - "community": 109, + "community": 115, "norm_label": "save_vehicle_personnel()" }, { @@ -34870,7 +35090,7 @@ "source_location": "L142", "_origin": "ast", "id": "app_services_pl_personnel_service_build_personnel_summary", - "community": 53, + "community": 115, "norm_label": "build_personnel_summary()" }, { @@ -34880,7 +35100,7 @@ "source_location": "L159", "_origin": "ast", "id": "app_services_pl_personnel_service_load_vehicle_personnel_rows", - "community": 109, + "community": 115, "norm_label": "load_vehicle_personnel_rows()" }, { @@ -34890,7 +35110,7 @@ "source_location": "L192", "_origin": "ast", "id": "app_services_pl_personnel_service_load_vehicle_personnel_summaries", - "community": 109, + "community": 115, "norm_label": "load_vehicle_personnel_summaries()" }, { @@ -34900,7 +35120,7 @@ "source_location": "L226", "_origin": "ast", "id": "app_services_pl_personnel_service_refresh_personnel_ages_from_id_card", - "community": 109, + "community": 82, "norm_label": "refresh_personnel_ages_from_id_card()" }, { @@ -34910,7 +35130,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_personnel_service_rationale_1", - "community": 109, + "community": 115, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 - \u4eba\u5458 upsert \u4e0e\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u4fdd\u5b58" }, { @@ -34920,7 +35140,7 @@ "source_location": "L25", "_origin": "ast", "id": "app_services_pl_personnel_service_rationale_25", - "community": 109, + "community": 115, "norm_label": "\u6309 personnelid \u2192 phone \u2192 name \u5f31\u5339\u914d upsert,\u8fd4\u56de personnel_id\u3002" }, { @@ -34930,7 +35150,7 @@ "source_location": "L145", "_origin": "ast", "id": "app_services_pl_personnel_service_rationale_145", - "community": 53, + "community": 115, "norm_label": "links: [(personnel_name, role, is_default)] \u2192 (summary, default_driver_name)." }, { @@ -34940,7 +35160,7 @@ "source_location": "L195", "_origin": "ast", "id": "app_services_pl_personnel_service_rationale_195", - "community": 109, + "community": 115, "norm_label": "\u6279\u91cf\u52a0\u8f7d personnelsummary / defaultdrivername\u3002" }, { @@ -34950,7 +35170,7 @@ "source_location": "L227", "_origin": "ast", "id": "app_services_pl_personnel_service_rationale_227", - "community": 109, + "community": 82, "norm_label": "\u6309 18 \u4f4d\u8eab\u4efd\u8bc1\u53f7\u91cd\u7b97 pl_personnel.age,\u4ec5\u66f4\u65b0\u7b97\u51fa\u503c\u4e0e\u5e93\u4e2d\u4e0d\u4e00\u81f4\u7684\u8bb0\u5f55\u3002\u8fd4\u56de\u66f4\u65b0\u6761\u6570\u3002" }, { @@ -34960,29 +35180,149 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_plan_contract_gap", - "community": 103, + "community": 47, "norm_label": "pl_plan_contract_gap.py" }, { "label": "compute_contract_gap_sides()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L8", + "source_location": "L27", "_origin": "ast", "id": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", - "community": 103, + "community": 47, "norm_label": "compute_contract_gap_sides()" }, { "label": "side_is_exempt()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L23", + "source_location": "L42", "_origin": "ast", "id": "app_services_pl_plan_contract_gap_side_is_exempt", - "community": 103, + "community": 47, "norm_label": "side_is_exempt()" }, + { + "label": "_side_contract_exists()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L46", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_side_contract_exists", + "community": 47, + "norm_label": "_side_contract_exists()" + }, + { + "label": "_supplier_gap_expr()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L57", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_supplier_gap_expr", + "community": 47, + "norm_label": "_supplier_gap_expr()" + }, + { + "label": "_demander_gap_expr()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L70", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_demander_gap_expr", + "community": 47, + "norm_label": "_demander_gap_expr()" + }, + { + "label": "plan_has_contract_gap_exists()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L83", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "community": 47, + "norm_label": "plan_has_contract_gap_exists()" + }, + { + "label": "build_plan_contract_gap_read()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L88", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "community": 47, + "norm_label": "build_plan_contract_gap_read()" + }, + { + "label": "_load_products_by_plan_ids()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L120", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_load_products_by_plan_ids", + "community": 47, + "norm_label": "_load_products_by_plan_ids()" + }, + { + "label": "Session", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_py_session", + "community": 47, + "norm_label": "session" + }, + { + "label": "list_plan_contract_gaps()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L141", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "community": 47, + "norm_label": "list_plan_contract_gaps()" + }, + { + "label": "date", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_py_date", + "community": 47, + "norm_label": "date" + }, + { + "label": "update_plan_side_contracts()", + "file_type": "code", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L228", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "community": 47, + "norm_label": "update_plan_side_contracts()" + }, + { + "label": "\u5217\u8868\u7b5b\u9009\uff1a\u8ba1\u5212\u5b58\u5728\u5408\u540c\u7f3a\u53e3\uff08\u975e\u5185\u7f6e\u4fa7\u7f3a\u5c11\u6709\u6548 pl_plan_contract \u5173\u8054\uff09\u3002", + "file_type": "rationale", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L84", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_rationale_84", + "community": 47, + "norm_label": "\u5217\u8868\u7b5b\u9009:\u8ba1\u5212\u5b58\u5728\u5408\u540c\u7f3a\u53e3(\u975e\u5185\u7f6e\u4fa7\u7f3a\u5c11\u6709\u6548 pl_plan_contract \u5173\u8054)\u3002" + }, + { + "label": "\u5355\u4fa7\u4fdd\u5b58\u8ba1\u5212\u5408\u540c\u5173\u8054\uff1b\u5141\u8bb8\u7a7a\u5217\u8868\uff0c\u4e0d\u5f3a\u5236\u975e\u5185\u7f6e\u4fa7\u5fc5\u987b\u6709\u5408\u540c\u3002", + "file_type": "rationale", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L238", + "_origin": "ast", + "id": "app_services_pl_plan_contract_gap_rationale_238", + "community": 47, + "norm_label": "\u5355\u4fa7\u4fdd\u5b58\u8ba1\u5212\u5408\u540c\u5173\u8054;\u5141\u8bb8\u7a7a\u5217\u8868,\u4e0d\u5f3a\u5236\u975e\u5185\u7f6e\u4fa7\u5fc5\u987b\u6709\u5408\u540c\u3002" + }, { "label": "pl_plan_service.py", "file_type": "code", @@ -34990,7 +35330,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_plan_service", - "community": 5, + "community": 103, "norm_label": "pl_plan_service.py" }, { @@ -35020,7 +35360,7 @@ "source_location": "L63", "_origin": "ast", "id": "app_services_pl_plan_service_product_quantity", - "community": 5, + "community": 103, "norm_label": "_product_quantity()" }, { @@ -35030,7 +35370,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_plan_service_py_decimal", - "community": 5, + "community": 103, "norm_label": "decimal" }, { @@ -35040,7 +35380,7 @@ "source_location": "L73", "_origin": "ast", "id": "app_services_pl_plan_service_product_create_actual_qty", - "community": 5, + "community": 103, "norm_label": "_product_create_actual_qty()" }, { @@ -35050,7 +35390,7 @@ "source_location": "L79", "_origin": "ast", "id": "app_services_pl_plan_service_plan_product_actual_qty", - "community": 5, + "community": 103, "norm_label": "_plan_product_actual_qty()" }, { @@ -35060,7 +35400,7 @@ "source_location": "L85", "_origin": "ast", "id": "app_services_pl_plan_service_sum_product_actual_quantities", - "community": 5, + "community": 103, "norm_label": "sum_product_actual_quantities()" }, { @@ -35070,7 +35410,7 @@ "source_location": "L89", "_origin": "ast", "id": "app_services_pl_plan_service_sum_plan_product_actual_quantities", - "community": 5, + "community": 103, "norm_label": "sum_plan_product_actual_quantities()" }, { @@ -35080,7 +35420,7 @@ "source_location": "L93", "_origin": "ast", "id": "app_services_pl_plan_service_estimate_qty_fields", - "community": 5, + "community": 103, "norm_label": "_estimate_qty_fields()" }, { @@ -35090,7 +35430,7 @@ "source_location": "L104", "_origin": "ast", "id": "app_services_pl_plan_service_build_plan_product", - "community": 5, + "community": 103, "norm_label": "build_plan_product()" }, { @@ -35100,7 +35440,7 @@ "source_location": "L154", "_origin": "ast", "id": "app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", - "community": 5, + "community": 103, "norm_label": "_apply_vehicle_snapshot_to_plan_transport()" }, { @@ -35110,7 +35450,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_plan_service_py_session", - "community": 5, + "community": 103, "norm_label": "session" }, { @@ -35120,7 +35460,7 @@ "source_location": "L172", "_origin": "ast", "id": "app_services_pl_plan_service_resolve_driver", - "community": 5, + "community": 103, "norm_label": "_resolve_driver()" }, { @@ -35130,7 +35470,7 @@ "source_location": "L218", "_origin": "ast", "id": "app_services_pl_plan_service_calc_freight_amount", - "community": 5, + "community": 103, "norm_label": "_calc_freight_amount()" }, { @@ -35140,7 +35480,7 @@ "source_location": "L239", "_origin": "ast", "id": "app_services_pl_plan_service_fetch_hazard_flags_map", - "community": 5, + "community": 103, "norm_label": "fetch_hazard_flags_map()" }, { @@ -35150,7 +35490,7 @@ "source_location": "L265", "_origin": "ast", "id": "app_services_pl_plan_service_resolve_hazard_flags_from_crm", - "community": 5, + "community": 103, "norm_label": "resolve_hazard_flags_from_crm()" }, { @@ -35160,7 +35500,7 @@ "source_location": "L293", "_origin": "ast", "id": "app_services_pl_plan_service_plan_has_hazard_products", - "community": 5, + "community": 103, "norm_label": "plan_has_hazard_products()" }, { @@ -35170,7 +35510,7 @@ "source_location": "L301", "_origin": "ast", "id": "app_services_pl_plan_service_cert_url_blank", - "community": 125, + "community": 5, "norm_label": "_cert_url_blank()" }, { @@ -35180,7 +35520,7 @@ "source_location": "L306", "_origin": "ast", "id": "app_services_pl_plan_service_plan_has_hazard_product_exists", - "community": 125, + "community": 5, "norm_label": "plan_has_hazard_product_exists()" }, { @@ -35190,7 +35530,7 @@ "source_location": "L328", "_origin": "ast", "id": "app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", - "community": 125, + "community": 5, "norm_label": "plan_has_incomplete_hazard_cert_exists()" }, { @@ -35200,7 +35540,7 @@ "source_location": "L361", "_origin": "ast", "id": "app_services_pl_plan_service_collect_hazard_product_ids", - "community": 5, + "community": 103, "norm_label": "collect_hazard_product_ids()" }, { @@ -35210,7 +35550,7 @@ "source_location": "L386", "_origin": "ast", "id": "app_services_pl_plan_service_clear_hazard_cert_ready", - "community": 5, + "community": 103, "norm_label": "clear_hazard_cert_ready()" }, { @@ -35220,7 +35560,7 @@ "source_location": "L392", "_origin": "ast", "id": "app_services_pl_plan_service_required_hazard_cert_fields", - "community": 5, + "community": 103, "norm_label": "_required_hazard_cert_fields()" }, { @@ -35230,7 +35570,7 @@ "source_location": "L401", "_origin": "ast", "id": "app_services_pl_plan_service_is_hazard_product_cert_complete", - "community": 5, + "community": 103, "norm_label": "_is_hazard_product_cert_complete()" }, { @@ -35240,7 +35580,7 @@ "source_location": "L413", "_origin": "ast", "id": "app_services_pl_plan_service_all_hazard_products_cert_complete", - "community": 5, + "community": 103, "norm_label": "all_hazard_products_cert_complete()" }, { @@ -35250,7 +35590,7 @@ "source_location": "L446", "_origin": "ast", "id": "app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", - "community": 5, + "community": 103, "norm_label": "maybe_auto_set_hazard_cert_ready()" }, { @@ -35260,7 +35600,7 @@ "source_location": "L464", "_origin": "ast", "id": "app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", - "community": 5, + "community": 103, "norm_label": "validate_hazard_cert_ready_for_transport()" }, { @@ -35270,7 +35610,7 @@ "source_location": "L482", "_origin": "ast", "id": "app_services_pl_plan_service_set_hazard_cert_ready", - "community": 5, + "community": 103, "norm_label": "set_hazard_cert_ready()" }, { @@ -35280,7 +35620,7 @@ "source_location": "L532", "_origin": "ast", "id": "app_services_pl_plan_service_update_plan_product_certs", - "community": 5, + "community": 103, "norm_label": "update_plan_product_certs()" }, { @@ -35290,7 +35630,7 @@ "source_location": "L608", "_origin": "ast", "id": "app_services_pl_plan_service_generate_transport_no", - "community": 5, + "community": 103, "norm_label": "_generate_transport_no()" }, { @@ -35300,7 +35640,7 @@ "source_location": "L626", "_origin": "ast", "id": "app_services_pl_plan_service_resolve_transport_context", - "community": 5, + "community": 103, "norm_label": "_resolve_transport_context()" }, { @@ -35310,7 +35650,7 @@ "source_location": "L692", "_origin": "ast", "id": "app_services_pl_plan_service_apply_payload_to_transport_row", - "community": 5, + "community": 103, "norm_label": "_apply_payload_to_transport_row()" }, { @@ -35320,7 +35660,7 @@ "source_location": "L729", "_origin": "ast", "id": "app_services_pl_plan_service_upsert_draft_transport_for_plan", - "community": 5, + "community": 103, "norm_label": "upsert_draft_transport_for_plan()" }, { @@ -35330,7 +35670,7 @@ "source_location": "L852", "_origin": "ast", "id": "app_services_pl_plan_service_clear_draft_transport_for_plan", - "community": 5, + "community": 103, "norm_label": "clear_draft_transport_for_plan()" }, { @@ -35340,7 +35680,7 @@ "source_location": "L893", "_origin": "ast", "id": "app_services_pl_plan_service_sync_transport_prefill_for_plan", - "community": 5, + "community": 103, "norm_label": "sync_transport_prefill_for_plan()" }, { @@ -35350,7 +35690,7 @@ "source_location": "L915", "_origin": "ast", "id": "app_services_pl_plan_service_apply_vehicle_prefill_to_plan", - "community": 5, + "community": 103, "norm_label": "apply_vehicle_prefill_to_plan()" }, { @@ -35360,7 +35700,7 @@ "source_location": "L937", "_origin": "ast", "id": "app_services_pl_plan_service_create_transport_for_plan", - "community": 5, + "community": 103, "norm_label": "create_transport_for_plan()" }, { @@ -35370,7 +35710,7 @@ "source_location": "L1055", "_origin": "ast", "id": "app_services_pl_plan_service_assert_contract_selectable_for_plan", - "community": 5, + "community": 47, "norm_label": "assert_contract_selectable_for_plan()" }, { @@ -35380,7 +35720,7 @@ "source_location": "L1083", "_origin": "ast", "id": "app_services_pl_plan_service_normalize_contract_links", - "community": 5, + "community": 47, "norm_label": "_normalize_contract_links()" }, { @@ -35390,7 +35730,7 @@ "source_location": "L1099", "_origin": "ast", "id": "app_services_pl_plan_service_validate_plan_party_contracts", - "community": 5, + "community": 47, "norm_label": "validate_plan_party_contracts()" }, { @@ -35400,7 +35740,7 @@ "source_location": "L1150", "_origin": "ast", "id": "app_services_pl_plan_service_replace_plan_contracts", - "community": 5, + "community": 47, "norm_label": "replace_plan_contracts()" }, { @@ -35410,7 +35750,7 @@ "source_location": "L1197", "_origin": "ast", "id": "app_services_pl_plan_service_load_plan_contracts_grouped", - "community": 5, + "community": 103, "norm_label": "load_plan_contracts_grouped()" }, { @@ -35430,7 +35770,7 @@ "source_location": "L1251", "_origin": "ast", "id": "app_services_pl_plan_service_calc_plan_total_amount", - "community": 5, + "community": 103, "norm_label": "calc_plan_total_amount()" }, { @@ -35440,7 +35780,7 @@ "source_location": "L1262", "_origin": "ast", "id": "app_services_pl_plan_service_transport_has_locked_freight_settlement", - "community": 5, + "community": 103, "norm_label": "transport_has_locked_freight_settlement()" }, { @@ -35450,7 +35790,7 @@ "source_location": "L1286", "_origin": "ast", "id": "app_services_pl_plan_service_sync_archive_qty_from_io_order", - "community": 5, + "community": 103, "norm_label": "sync_archive_qty_from_io_order()" }, { @@ -35460,7 +35800,7 @@ "source_location": "L1335", "_origin": "ast", "id": "app_services_pl_plan_service_apply_archive_product_quantities", - "community": 5, + "community": 103, "norm_label": "apply_archive_product_quantities()" }, { @@ -35470,7 +35810,7 @@ "source_location": "L1403", "_origin": "ast", "id": "app_services_pl_plan_service_apply_archive_freight", - "community": 5, + "community": 103, "norm_label": "apply_archive_freight()" }, { @@ -35480,7 +35820,7 @@ "source_location": "L1497", "_origin": "ast", "id": "app_services_pl_plan_service_record_plan_change", - "community": 5, + "community": 103, "norm_label": "record_plan_change()" }, { @@ -35490,7 +35830,7 @@ "source_location": "L1523", "_origin": "ast", "id": "app_services_pl_plan_service_apply_plan_driver_feedback", - "community": 5, + "community": 103, "norm_label": "apply_plan_driver_feedback()" }, { @@ -35500,7 +35840,7 @@ "source_location": "L1581", "_origin": "ast", "id": "app_services_pl_plan_service_apply_plan_site_feedback", - "community": 5, + "community": 103, "norm_label": "apply_plan_site_feedback()" }, { @@ -35510,7 +35850,7 @@ "source_location": "L178", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_178", - "community": 5, + "community": 103, "norm_label": "\u89e3\u6790\u53f8\u673a:\u663e\u5f0f\u9009\u62e9\u4f18\u5148,\u5426\u5219\u53d6\u8f66\u8f86\u5173\u8054\u53f8\u673a;\u5747\u65e0\u5219\u5141\u8bb8\u4e3a\u7a7a\u3002" }, { @@ -35520,7 +35860,7 @@ "source_location": "L244", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_244", - "community": 5, + "community": 103, "norm_label": "\u6279\u91cf\u4ece crm \u4ea7\u54c1\u4e3b\u6570\u636e\u8bfb\u53d6\u6613\u5236\u6bd2/\u6613\u5236\u7206\u6807\u8bc6\u3002" }, { @@ -35530,7 +35870,7 @@ "source_location": "L272", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_272", - "community": 5, + "community": 103, "norm_label": "\u4ece crm \u4ea7\u54c1\u4e3b\u6570\u636e\u8bfb\u53d6\u6613\u5236\u6bd2/\u6613\u5236\u7206\u6807\u8bc6(\u4e0d\u8bfb\u8ba1\u5212\u4ea7\u54c1\u5feb\u7167)\u3002" }, { @@ -35540,7 +35880,7 @@ "source_location": "L302", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_302", - "community": 125, + "community": 5, "norm_label": "\u8bc1\u4e66 url \u4e3a\u7a7a(null / \u7a7a\u4e32 / \u7eaf\u7a7a\u767d)\u3002" }, { @@ -35550,7 +35890,7 @@ "source_location": "L307", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_307", - "community": 125, + "community": 5, "norm_label": "\u5217\u8868\u7b5b\u9009:\u8ba1\u5212\u4e0b\u5b58\u5728 crm \u6807\u8bc6\u4e3a\u6613\u5236\u6bd2/\u6613\u5236\u7206\u7684\u4ea7\u54c1\u3002" }, { @@ -35560,7 +35900,7 @@ "source_location": "L329", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_329", - "community": 125, + "community": 5, "norm_label": "\u5217\u8868\u7b5b\u9009:\u5b58\u5728\u5371\u5316\u4ea7\u54c1\u4e14\u81f3\u5c11\u4e00\u5f20\u5fc5\u9700\u8bc1\u4e66\u672a\u4e0a\u4f20\u3002" }, { @@ -35570,7 +35910,7 @@ "source_location": "L418", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_418", - "community": 5, + "community": 103, "norm_label": "\u8ba1\u5212\u5185\u6240\u6709\u5371\u5316\u54c1\u4ea7\u54c1\u7684\u6240\u9700\u8bc1\u4e66\u69fd\u4f4d\u5747\u5df2\u4e0a\u4f20\u3002" }, { @@ -35580,7 +35920,7 @@ "source_location": "L454", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_454", - "community": 5, + "community": 103, "norm_label": "\u5168\u90e8\u5371\u5316\u54c1\u8bc1\u4e66\u5df2\u4e0a\u4f20\u65f6,\u81ea\u52a8\u6807\u8bb0\u8bc1\u4e66\u9f50\u5907(\u4e0e\u4eba\u5de5\u786e\u8ba4\u7b49\u6548)\u3002" }, { @@ -35590,7 +35930,7 @@ "source_location": "L739", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_739", - "community": 5, + "community": 103, "norm_label": "\u5199\u5165/\u66f4\u65b0\u8349\u7a3f\u8fd0\u8f93\u5355(pl_transport + pl_plan_transport),\u8ba1\u5212\u4fdd\u6301\u5f85\u5b89\u6392\u3002" }, { @@ -35600,7 +35940,7 @@ "source_location": "L903", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_903", - "community": 5, + "community": 103, "norm_label": "\u540c\u6b65\u8fd0\u8f93\u9884\u9009\u5230\u8349\u7a3f\u8fd0\u8f93\u5b50\u8868(pl_transport)\u3002" }, { @@ -35610,7 +35950,7 @@ "source_location": "L1293", "_origin": "ast", "id": "app_services_pl_plan_service_rationale_1293", - "community": 5, + "community": 103, "norm_label": "\u82e5\u5b58\u5728\u5165\u5e93/\u51fa\u5e93\u5355,\u7528\u660e\u7ec6 actual_qty \u8986\u76d6\u5f52\u6863\u63d0\u4ea4\u4e2d\u7684\u5b9e\u9645\u6570\u91cf(\u6743\u5a01\u6765\u6e90)\u3002" }, { @@ -35620,7 +35960,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_product_display", - "community": 174, + "community": 79, "norm_label": "pl_product_display.py" }, { @@ -35630,7 +35970,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_services_pl_product_display_resolve_alias_from_saved_name", - "community": 174, + "community": 79, "norm_label": "resolve_alias_from_saved_name()" }, { @@ -35640,7 +35980,7 @@ "source_location": "L26", "_origin": "ast", "id": "app_services_pl_product_display_load_crm_product_alias_maps", - "community": 174, + "community": 79, "norm_label": "load_crm_product_alias_maps()" }, { @@ -35650,7 +35990,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_product_display_py_session", - "community": 174, + "community": 79, "norm_label": "session" }, { @@ -35660,7 +36000,7 @@ "source_location": "L74", "_origin": "ast", "id": "app_services_pl_product_display_resolve_product_display_names", - "community": 174, + "community": 79, "norm_label": "resolve_product_display_names()" }, { @@ -35670,7 +36010,7 @@ "source_location": "L94", "_origin": "ast", "id": "app_services_pl_product_display_apply_product_alias_display", - "community": 145, + "community": 79, "norm_label": "apply_product_alias_display()" }, { @@ -35680,7 +36020,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_product_display_rationale_1", - "community": 174, + "community": 79, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u4ea7\u54c1\u5c55\u793a:\u6807\u51c6\u540d / \u522b\u540d\u62c6\u5206(\u4e0e\u524d\u7aef applyaliasdisplaymeta \u5bf9\u9f50)" }, { @@ -35690,7 +36030,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_services_pl_product_display_rationale_16", - "community": 174, + "community": 79, "norm_label": "\u4ece\u5df2\u5b58 productname \u53cd\u63a8\u522b\u540d;\u7b49\u4e8e\u6807\u51c6\u540d\u6216\u4e0d\u5728\u522b\u540d\u5217\u8868 \u2192 none\u3002" }, { @@ -35700,7 +36040,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_services_pl_product_display_rationale_32", - "community": 174, + "community": 79, "norm_label": "\u6279\u91cf\u52a0\u8f7d crm \u6807\u51c6\u540d\u4e0e\u522b\u540d\u9009\u9879\u3002\u8fd4\u56de (standard_name_by_id, alias_options_by_id)\u3002" }, { @@ -35710,7 +36050,7 @@ "source_location": "L81", "_origin": "ast", "id": "app_services_pl_product_display_rationale_81", - "community": 174, + "community": 79, "norm_label": "\u8fd4\u56de (\u5c55\u793a\u7528\u4ea7\u54c1\u540d\u79f0, \u522b\u540d)\u3002 \u4ea7\u54c1\u540d\u79f0\u4f18\u5148 crm \u6807\u51c6\u540d;\u522b\u540d\u4ec5\u5728\u5df2\u5b58\u540d\u547d\u4e2d\u522b\u540d\u5217\u8868\u65f6\u8fd4\u56de\u3002" }, { @@ -35720,7 +36060,7 @@ "source_location": "L102", "_origin": "ast", "id": "app_services_pl_product_display_rationale_102", - "community": 145, + "community": 79, "norm_label": "\u5c31\u5730\u5199\u5165 item \u7684 productname(\u6807\u51c6\u540d)\u4e0e aliasname\u3002" }, { @@ -35780,7 +36120,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service", - "community": 53, + "community": 115, "norm_label": "pl_transport_resource_snapshot_service.py" }, { @@ -35790,7 +36130,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_cert_to_snapshot", - "community": 53, + "community": 115, "norm_label": "_cert_to_snapshot()" }, { @@ -35800,7 +36140,7 @@ "source_location": "L40", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_build_transport_resource_snapshot", - "community": 53, + "community": 103, "norm_label": "build_transport_resource_snapshot()" }, { @@ -35810,7 +36150,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_py_session", - "community": 53, + "community": 103, "norm_label": "session" }, { @@ -35820,7 +36160,7 @@ "source_location": "L122", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_apply_resource_snapshot_json", - "community": 173, + "community": 103, "norm_label": "apply_resource_snapshot_json()" }, { @@ -35830,7 +36170,7 @@ "source_location": "L140", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_clear_resource_snapshot", - "community": 5, + "community": 103, "norm_label": "clear_resource_snapshot()" }, { @@ -35840,7 +36180,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_rationale_1", - "community": 53, + "community": 115, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 - \u5b89\u6392\u8fd0\u8f93\u65f6\u8f66\u8f86/\u4eba\u5458/\u8bc1\u4ef6\u8d44\u6e90\u5feb\u7167" }, { @@ -35850,7 +36190,7 @@ "source_location": "L47", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_rationale_47", - "community": 53, + "community": 103, "norm_label": "\u8bfb\u53d6\u8f66\u8f86\u5f53\u524d\u4e3b\u6570\u636e,\u751f\u6210\u5b89\u6392\u8fd0\u8f93\u7528\u6574\u5305\u5feb\u7167\u3002" }, { @@ -35860,7 +36200,7 @@ "source_location": "L128", "_origin": "ast", "id": "app_services_pl_transport_resource_snapshot_service_rationale_128", - "community": 173, + "community": 103, "norm_label": "\u5c06\u5feb\u7167 json \u5199\u5165\u8ba1\u5212/\u8fd0\u8f93\u5355,\u5e76\u540c\u6b65\u6807\u91cf\u5197\u4f59\u5b57\u6bb5\u3002" }, { @@ -35870,7 +36210,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_transport_site_service", - "community": 145, + "community": 103, "norm_label": "pl_transport_site_service.py" }, { @@ -35880,7 +36220,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_services_pl_transport_site_service_transportsitelinkresult", - "community": 145, + "community": 103, "norm_label": "transportsitelinkresult" }, { @@ -35890,7 +36230,7 @@ "source_location": "L31", "_origin": "ast", "id": "app_services_pl_transport_site_service_normalize_plan_date", - "community": 145, + "community": 103, "norm_label": "_normalize_plan_date()" }, { @@ -35900,7 +36240,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_transport_site_service_py_date", - "community": 145, + "community": 103, "norm_label": "date" }, { @@ -35910,7 +36250,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_services_pl_transport_site_service_revoke_site_links_for_transport", - "community": 145, + "community": 5, "norm_label": "revoke_site_links_for_transport()" }, { @@ -35920,7 +36260,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_pl_transport_site_service_py_session", - "community": 145, + "community": 5, "norm_label": "session" }, { @@ -35930,7 +36270,7 @@ "source_location": "L67", "_origin": "ast", "id": "app_services_pl_transport_site_service_sync_site_links_for_transport", - "community": 145, + "community": 103, "norm_label": "sync_site_links_for_transport()" }, { @@ -35940,7 +36280,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_pl_transport_site_service_rationale_1", - "community": 145, + "community": 103, "norm_label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u5de5\u5382\u73b0\u573a\u94fe\u63a5(\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5355\u89e3\u8026)" }, { @@ -35950,7 +36290,7 @@ "source_location": "L77", "_origin": "ast", "id": "app_services_pl_transport_site_service_rationale_77", - "community": 145, + "community": 103, "norm_label": "\u5165\u5e93/\u51fa\u5e93\u5b89\u6392\u8fd0\u8f93:\u6309\u4ea7\u54c1\u751f\u6210\u73b0\u573a\u94fe\u63a5(\u4e0d\u5199 db_inbound_outbound)\u3002" }, { @@ -36830,7 +37170,7 @@ "source_location": "L13", "_origin": "ast", "id": "app_services_web_auth_roles_map_role_name_to_web", - "community": 93, + "community": 159, "norm_label": "_map_role_name_to_web()" }, { @@ -36920,7 +37260,7 @@ "source_location": "L14", "_origin": "ast", "id": "app_services_web_auth_roles_rationale_14", - "community": 93, + "community": 159, "norm_label": "\u5c06 sys_role.role_name \u6620\u5c04\u4e3a web-admin \u4f7f\u7528\u7684 role \u5b57\u7b26\u4e32\u3002" }, { @@ -36970,7 +37310,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_workflow_callback", - "community": 34, + "community": 107, "norm_label": "workflow_callback.py" }, { @@ -36980,7 +37320,7 @@ "source_location": "L23", "_origin": "ast", "id": "app_services_workflow_callback_register_local_callback", - "community": 12, + "community": 107, "norm_label": "register_local_callback()" }, { @@ -36990,7 +37330,7 @@ "source_location": "", "_origin": "ast", "id": "localcallbackfn", - "community": 12, + "community": 107, "norm_label": "_localcallbackfn" }, { @@ -37000,7 +37340,7 @@ "source_location": "L28", "_origin": "ast", "id": "app_services_workflow_callback_dispatch_local", - "community": 34, + "community": 107, "norm_label": "_dispatch_local()" }, { @@ -37010,7 +37350,7 @@ "source_location": "", "_origin": "ast", "id": "app_services_workflow_callback_py_any", - "community": 34, + "community": 107, "norm_label": "any" }, { @@ -37020,7 +37360,7 @@ "source_location": "L60", "_origin": "ast", "id": "app_services_workflow_callback_trigger_callback", - "community": 34, + "community": 107, "norm_label": "trigger_callback()" }, { @@ -37030,7 +37370,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_workflow_callback_rationale_1", - "community": 34, + "community": 107, "norm_label": "\u5de5\u4f5c\u6d41\u56de\u8c03\u670d\u52a1 \u2014\u2014 \u6d41\u7a0b\u72b6\u6001\u53d8\u66f4\u65f6\u901a\u77e5\u4e1a\u52a1\u7cfb\u7edf" }, { @@ -37040,7 +37380,7 @@ "source_location": "L24", "_origin": "ast", "id": "app_services_workflow_callback_rationale_24", - "community": 12, + "community": 107, "norm_label": "\u6ce8\u518c\u672c\u5730\u56de\u8c03\u51fd\u6570\u3002\u5f53 callback_url \u4ee5 path \u5f00\u5934\u65f6\u76f4\u63a5\u8c03\u7528 fn\u3002" }, { @@ -37050,7 +37390,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_services_workflow_callback_rationale_29", - "community": 34, + "community": 107, "norm_label": "\u5c1d\u8bd5\u672c\u5730\u76f4\u8c03\u3002\u8fd4\u56de true \u8868\u793a\u5df2\u5904\u7406,false \u8868\u793a\u65e0\u5339\u914d\u7684\u672c\u5730\u56de\u8c03\u3002" }, { @@ -37060,7 +37400,7 @@ "source_location": "L61", "_origin": "ast", "id": "app_services_workflow_callback_rationale_61", - "community": 34, + "community": 107, "norm_label": "\u6d41\u7a0b\u5b9e\u4f8b\u72b6\u6001\u53d8\u66f4\u540e,\u5411\u4e1a\u52a1\u7cfb\u7edf\u53d1\u9001\u56de\u8c03\u901a\u77e5\u3002 \u4f18\u5148\u7ea7: 1. \u5982\u679c callback_url \u662f\u5185\u90e8\u8def\u5f84(\u4ee5 / \u5f00\u5934),\u4f18\u5148\u5c1d\u8bd5\u672c\u5730\u76f4\u8c03" }, { @@ -37070,7 +37410,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_workflow_engine", - "community": 34, + "community": 107, "norm_label": "workflow_engine.py" }, { @@ -37140,7 +37480,7 @@ "source_location": "L126", "_origin": "ast", "id": "app_services_workflow_engine_workflowengine_reject_task", - "community": 34, + "community": 107, "norm_label": ".reject_task()" }, { @@ -37240,7 +37580,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_services_workflow_engine_rationale_1", - "community": 34, + "community": 107, "norm_label": "\u5de5\u4f5c\u6d41\u5f15\u64ce \u2014\u2014 \u8bfb\u53d6\u8282\u70b9\u4e0e\u8fde\u7ebf\u6267\u884c\u5ba1\u6279\u6d41\u8f6c" }, { @@ -37250,7 +37590,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_tasks_init", - "community": 171, + "community": 55, "norm_label": "__init__.py" }, { @@ -37260,7 +37600,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_tasks_init_init_scheduled_tasks", - "community": 38, + "community": 120, "norm_label": "init_scheduled_tasks()" }, { @@ -37270,7 +37610,7 @@ "source_location": "L78", "_origin": "ast", "id": "app_tasks_init_shutdown_scheduler", - "community": 38, + "community": 120, "norm_label": "shutdown_scheduler()" }, { @@ -37280,7 +37620,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_tasks_customer_pool", - "community": 171, + "community": 55, "norm_label": "customer_pool.py" }, { @@ -37290,7 +37630,7 @@ "source_location": "L17", "_origin": "ast", "id": "app_tasks_customer_pool_check_customer_protect_time", - "community": 171, + "community": 55, "norm_label": "check_customer_protect_time()" }, { @@ -37300,7 +37640,7 @@ "source_location": "L66", "_origin": "ast", "id": "app_tasks_customer_pool_remind_customer_recycle", - "community": 171, + "community": 55, "norm_label": "remind_customer_recycle()" }, { @@ -37310,7 +37650,7 @@ "source_location": "L112", "_origin": "ast", "id": "app_tasks_customer_pool_pool_recovery_job", - "community": 171, + "community": 55, "norm_label": "pool_recovery_job()" }, { @@ -37320,7 +37660,7 @@ "source_location": "L152", "_origin": "ast", "id": "app_tasks_customer_pool_warn_customer_recycle", - "community": 171, + "community": 55, "norm_label": "warn_customer_recycle()" }, { @@ -37330,7 +37670,7 @@ "source_location": "L225", "_origin": "ast", "id": "app_tasks_customer_pool_recycle_to_pool", - "community": 171, + "community": 55, "norm_label": "_recycle_to_pool()" }, { @@ -37340,7 +37680,7 @@ "source_location": "", "_origin": "ast", "id": "app_tasks_customer_pool_py_session", - "community": 171, + "community": 55, "norm_label": "session" }, { @@ -37350,7 +37690,7 @@ "source_location": "L18", "_origin": "ast", "id": "app_tasks_customer_pool_rationale_18", - "community": 171, + "community": 55, "norm_label": "\u6bcf\u5929\u51cc\u66681\u70b9:\u68c0\u67e5\u4fdd\u62a4\u671f\u5230\u671f\u5ba2\u6237,\u8ddf\u8fdb\u6b21\u6570\u4e0d\u8db3\u5219\u9000\u56de\u516c\u6d77" }, { @@ -37360,7 +37700,7 @@ "source_location": "L67", "_origin": "ast", "id": "app_tasks_customer_pool_rationale_67", - "community": 171, + "community": 55, "norm_label": "\u6bcf\u5929\u65e9\u4e0a9\u70b9:\u4fdd\u62a4\u671f\u5230\u671f\u63d0\u9192(3\u5929\u5185\u5230\u671f\u4e14\u8ddf\u8fdb\u4e0d\u8db3)" }, { @@ -37400,7 +37740,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_tasks_pl_cert_expiry", - "community": 171, + "community": 115, "norm_label": "pl_cert_expiry.py" }, { @@ -37410,7 +37750,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_tasks_pl_cert_expiry_scan_pl_cert_expiry_job", - "community": 171, + "community": 115, "norm_label": "scan_pl_cert_expiry_job()" }, { @@ -37420,7 +37760,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_tasks_pl_cert_expiry_rationale_11", - "community": 171, + "community": 115, "norm_label": "\u6bcf\u65e5\u626b\u63cf pl_cert,\u751f\u6210\u8bc1\u4ef6\u5230\u671f\u63d0\u9192\u3002" }, { @@ -37430,7 +37770,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_tasks_pl_personnel_age", - "community": 109, + "community": 82, "norm_label": "pl_personnel_age.py" }, { @@ -37440,7 +37780,7 @@ "source_location": "L10", "_origin": "ast", "id": "app_tasks_pl_personnel_age_refresh_personnel_ages_job", - "community": 109, + "community": 82, "norm_label": "refresh_personnel_ages_job()" }, { @@ -37450,7 +37790,7 @@ "source_location": "L11", "_origin": "ast", "id": "app_tasks_pl_personnel_age_rationale_11", - "community": 109, + "community": 82, "norm_label": "\u6bcf\u65e5\u51cc\u6668\u91cd\u7b97 pl_personnel \u5e74\u9f84(\u6709\u5408\u6cd5 18 \u4f4d\u8eab\u4efd\u8bc1\u53f7\u7684\u8bb0\u5f55)\u3002" }, { @@ -37470,7 +37810,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_bx_codegen", - "community": 47, + "community": 17, "norm_label": "bx_codegen.py" }, { @@ -37480,7 +37820,7 @@ "source_location": "L15", "_origin": "ast", "id": "app_utils_bx_codegen_generate_apply_code", - "community": 47, + "community": 17, "norm_label": "generate_apply_code()" }, { @@ -37490,7 +37830,7 @@ "source_location": "", "_origin": "ast", "id": "app_utils_bx_codegen_py_session", - "community": 47, + "community": 17, "norm_label": "session" }, { @@ -37500,7 +37840,7 @@ "source_location": "L40", "_origin": "ast", "id": "app_utils_bx_codegen_parse_reimburse_date", - "community": 47, + "community": 17, "norm_label": "parse_reimburse_date()" }, { @@ -37510,7 +37850,7 @@ "source_location": "", "_origin": "ast", "id": "app_utils_bx_codegen_py_date", - "community": 47, + "community": 17, "norm_label": "date" }, { @@ -37520,7 +37860,7 @@ "source_location": "", "_origin": "ast", "id": "app_utils_bx_codegen_py_datetime", - "community": 47, + "community": 17, "norm_label": "datetime" }, { @@ -37530,7 +37870,7 @@ "source_location": "L53", "_origin": "ast", "id": "app_utils_bx_codegen_parse_optional_date", - "community": 47, + "community": 17, "norm_label": "parse_optional_date()" }, { @@ -37540,7 +37880,7 @@ "source_location": "L67", "_origin": "ast", "id": "app_utils_bx_codegen_format_reimburse_title", - "community": 47, + "community": 17, "norm_label": "format_reimburse_title()" }, { @@ -37550,7 +37890,7 @@ "source_location": "L71", "_origin": "ast", "id": "app_utils_bx_codegen_is_auto_reimburse_title", - "community": 47, + "community": 17, "norm_label": "is_auto_reimburse_title()" }, { @@ -37560,7 +37900,7 @@ "source_location": "L75", "_origin": "ast", "id": "app_utils_bx_codegen_preview_reimburse_title_seq", - "community": 47, + "community": 17, "norm_label": "preview_reimburse_title_seq()" }, { @@ -37570,7 +37910,7 @@ "source_location": "L94", "_origin": "ast", "id": "app_utils_bx_codegen_allocate_reimburse_title_seq", - "community": 47, + "community": 17, "norm_label": "allocate_reimburse_title_seq()" }, { @@ -37580,7 +37920,7 @@ "source_location": "L116", "_origin": "ast", "id": "app_utils_bx_codegen_generate_title", - "community": 47, + "community": 17, "norm_label": "generate_title()" }, { @@ -37590,7 +37930,7 @@ "source_location": "L129", "_origin": "ast", "id": "app_utils_bx_codegen_resolve_reimburse_title", - "community": 47, + "community": 17, "norm_label": "resolve_reimburse_title()" }, { @@ -37600,7 +37940,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_bx_codegen_rationale_1", - "community": 47, + "community": 17, "norm_label": "\u62a5\u9500\u5355\u53f7/\u6807\u9898\u751f\u6210(\u4ece bx-backend \u8fc1\u79fb,\u589e\u52a0 tenant_no \u9694\u79bb)\u3002" }, { @@ -37610,7 +37950,7 @@ "source_location": "L16", "_origin": "ast", "id": "app_utils_bx_codegen_rationale_16", - "community": 47, + "community": 17, "norm_label": "\u751f\u6210\u987a\u5e8f\u5355\u53f7:{prefix}{yyyymmdd}{3\u4f4d\u5e8f\u53f7}\u3002 prefix \u793a\u4f8b:byj(\u5907\u7528\u91d1)\u3001bx(\u62a5\u9500)\u3002" }, { @@ -37620,7 +37960,7 @@ "source_location": "L54", "_origin": "ast", "id": "app_utils_bx_codegen_rationale_54", - "community": 47, + "community": 17, "norm_label": "\u53ef\u9009\u65e5\u671f:\u7a7a \u2192 none;\u5408\u6cd5 yyyy-mm-dd / date / datetime \u2192 date\u3002" }, { @@ -37630,7 +37970,7 @@ "source_location": "L100", "_origin": "ast", "id": "app_utils_bx_codegen_rationale_100", - "community": 47, + "community": 17, "norm_label": "\u5206\u914d\u540c\u79df\u6237\u3001\u540c\u62a5\u9500\u65e5\u671f\u4e0b\u7684\u6807\u9898\u5e8f\u53f7(max+1)\u3002 \u914d\u5408 uk_tenant_reimburse_date_title_seq \u552f\u4e00\u7ea6\u675f,\u5e76\u53d1\u51b2\u7a81\u65f6\u7531\u4e0a" }, { @@ -37640,7 +37980,7 @@ "source_location": "L123", "_origin": "ast", "id": "app_utils_bx_codegen_rationale_123", - "community": 47, + "community": 17, "norm_label": "\u9884\u89c8\u7528\u6807\u9898\u751f\u6210(\u63d0\u4ea4\u65f6\u4ecd\u4f1a\u5728\u670d\u52a1\u7aef\u91cd\u65b0\u5206\u914d\u5e8f\u53f7\u4ee5\u4fdd\u8bc1\u5e76\u53d1\u5b89\u5168)\u3002" }, { @@ -37650,7 +37990,7 @@ "source_location": "L137", "_origin": "ast", "id": "app_utils_bx_codegen_rationale_137", - "community": 47, + "community": 17, "norm_label": "\u786e\u5b9a\u6700\u7ec8\u6807\u9898\u4e0e title_seq\u3002 - \u672a\u586b\u6807\u9898\u6216\u4ecd\u4e3a\u81ea\u52a8\u6807\u9898\u683c\u5f0f\u65f6:\u6309\u62a5\u9500\u65e5\u671f\u91cd\u65b0\u5206\u914d\u5e8f\u53f7\u5e76\u751f\u6210\u6807\u9898\u3002 - \u81ea\u5b9a\u4e49\u6807\u9898:title_seq" }, { @@ -37660,7 +38000,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_bx_date_range", - "community": 41, + "community": 10, "norm_label": "bx_date_range.py" }, { @@ -37670,7 +38010,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_utils_bx_date_range_current_month_bounds", - "community": 41, + "community": 10, "norm_label": "current_month_bounds()" }, { @@ -37680,7 +38020,7 @@ "source_location": "", "_origin": "ast", "id": "app_utils_bx_date_range_py_datetime", - "community": 41, + "community": 10, "norm_label": "datetime" }, { @@ -37690,7 +38030,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_utils_bx_date_range_parse_create_time_day_bounds", - "community": 41, + "community": 10, "norm_label": "parse_create_time_day_bounds()" }, { @@ -37700,7 +38040,7 @@ "source_location": "L29", "_origin": "ast", "id": "app_utils_bx_date_range_parse_day_start", - "community": 41, + "community": 10, "norm_label": "_parse_day_start()" }, { @@ -37710,7 +38050,7 @@ "source_location": "L38", "_origin": "ast", "id": "app_utils_bx_date_range_resolve_create_time_bounds", - "community": 41, + "community": 10, "norm_label": "resolve_create_time_bounds()" }, { @@ -37720,7 +38060,7 @@ "source_location": "L57", "_origin": "ast", "id": "app_utils_bx_date_range_append_create_time_filters", - "community": 52, + "community": 18, "norm_label": "append_create_time_filters()" }, { @@ -37730,7 +38070,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_bx_date_range_rationale_1", - "community": 41, + "community": 10, "norm_label": "\u62a5\u9500\u6a21\u5757\u65e5\u671f\u8303\u56f4\u5de5\u5177(\u4ece bx-backend \u8fc1\u79fb)\u3002" }, { @@ -37740,7 +38080,7 @@ "source_location": "L8", "_origin": "ast", "id": "app_utils_bx_date_range_rationale_8", - "community": 41, + "community": 10, "norm_label": "\u5f53\u524d\u81ea\u7136\u6708 [month_start, next_month_start)\u3002" }, { @@ -37750,7 +38090,7 @@ "source_location": "L43", "_origin": "ast", "id": "app_utils_bx_date_range_rationale_43", - "community": 41, + "community": 10, "norm_label": "\u89e3\u6790\u7533\u8bf7\u65f6\u95f4\u7b5b\u9009\u8fb9\u754c,\u8fd4\u56de (\u542b\u8d77, \u4e0d\u542b\u6b62)\u3002" }, { @@ -37760,7 +38100,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_crm_export_columns", - "community": 9, + "community": 52, "norm_label": "crm_export_columns.py" }, { @@ -37770,7 +38110,7 @@ "source_location": "L7", "_origin": "ast", "id": "app_utils_crm_export_columns_yes_no", - "community": 9, + "community": 52, "norm_label": "_yes_no()" }, { @@ -37780,7 +38120,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_crm_export_columns_rationale_1", - "community": 9, + "community": 52, "norm_label": "crm \u6a21\u5757 excel \u5bfc\u51fa\u5217\u5b9a\u4e49(\u5b57\u6bb5\u4e0e\u5b57\u5178\u7c7b\u578b\u5bf9\u9f50 java *vo @exceldictformat)\u3002" }, { @@ -37790,7 +38130,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_excel_export", - "community": 9, + "community": 52, "norm_label": "excel_export.py" }, { @@ -37800,7 +38140,7 @@ "source_location": "L18", "_origin": "ast", "id": "app_utils_excel_export_exportcolumn", - "community": 9, + "community": 52, "norm_label": "exportcolumn" }, { @@ -37810,7 +38150,7 @@ "source_location": "L27", "_origin": "ast", "id": "app_utils_excel_export_load_dict_label_maps", - "community": 9, + "community": 79, "norm_label": "load_dict_label_maps()" }, { @@ -37820,7 +38160,7 @@ "source_location": "", "_origin": "ast", "id": "app_utils_excel_export_py_session", - "community": 9, + "community": 79, "norm_label": "session" }, { @@ -37830,7 +38170,7 @@ "source_location": "L56", "_origin": "ast", "id": "app_utils_excel_export_dictlabelresolver", - "community": 9, + "community": 52, "norm_label": "dictlabelresolver" }, { @@ -37840,7 +38180,7 @@ "source_location": "L59", "_origin": "ast", "id": "app_utils_excel_export_dictlabelresolver_init", - "community": 9, + "community": 79, "norm_label": ".__init__()" }, { @@ -37850,7 +38190,7 @@ "source_location": "L71", "_origin": "ast", "id": "app_utils_excel_export_dictlabelresolver_resolve", - "community": 9, + "community": 52, "norm_label": ".resolve()" }, { @@ -37860,7 +38200,7 @@ "source_location": "", "_origin": "ast", "id": "app_utils_excel_export_py_any", - "community": 9, + "community": 52, "norm_label": "any" }, { @@ -37870,7 +38210,7 @@ "source_location": "L83", "_origin": "ast", "id": "app_utils_excel_export_dictlabelresolver_row_to_cells", - "community": 9, + "community": 52, "norm_label": ".row_to_cells()" }, { @@ -37880,7 +38220,7 @@ "source_location": "L87", "_origin": "ast", "id": "app_utils_excel_export_build_workbook", - "community": 9, + "community": 52, "norm_label": "_build_workbook()" }, { @@ -37890,7 +38230,7 @@ "source_location": "L104", "_origin": "ast", "id": "app_utils_excel_export_workbook_to_streaming_response", - "community": 9, + "community": 52, "norm_label": "workbook_to_streaming_response()" }, { @@ -37900,7 +38240,7 @@ "source_location": "", "_origin": "ast", "id": "streamingresponse", - "community": 7, + "community": 52, "norm_label": "streamingresponse" }, { @@ -37910,7 +38250,7 @@ "source_location": "L124", "_origin": "ast", "id": "app_utils_excel_export_export_rows_to_xlsx_response", - "community": 9, + "community": 52, "norm_label": "export_rows_to_xlsx_response()" }, { @@ -37920,7 +38260,7 @@ "source_location": "L1", "_origin": "ast", "id": "app_utils_excel_export_rationale_1", - "community": 9, + "community": 52, "norm_label": "excel \u5bfc\u51fa\u5de5\u5177:\u96c6\u4e2d\u5904\u7406\u5b57\u5178 code \u2192 label(\u5bf9\u9f50 java exceldictconvert / exceldictpreloadconver" }, { @@ -37930,7 +38270,7 @@ "source_location": "L19", "_origin": "ast", "id": "app_utils_excel_export_rationale_19", - "community": 9, + "community": 52, "norm_label": "\u5bfc\u51fa\u5217\u5b9a\u4e49,dict_type \u975e\u7a7a\u65f6\u81ea\u52a8\u5c06\u5b57\u5178 value \u8f6c\u4e3a label\u3002" }, { @@ -37940,7 +38280,7 @@ "source_location": "L32", "_origin": "ast", "id": "app_utils_excel_export_rationale_32", - "community": 9, + "community": 79, "norm_label": "\u9884\u52a0\u8f7d\u591a\u4e2a\u5b57\u5178\u7c7b\u578b\u7684 value\u2192label \u6620\u5c04(\u5355\u6b21\u67e5\u8be2,\u907f\u514d n+1)\u3002" }, { @@ -37950,7 +38290,7 @@ "source_location": "L57", "_origin": "ast", "id": "app_utils_excel_export_rationale_57", - "community": 9, + "community": 52, "norm_label": "\u5bfc\u51fa\u5355\u5143\u683c\u89e3\u6790:\u6309\u5217\u914d\u7f6e\u505a\u5b57\u5178\u7ffb\u8bd1\u6216\u81ea\u5b9a\u4e49\u683c\u5f0f\u5316\u3002" }, { @@ -37960,7 +38300,7 @@ "source_location": "L134", "_origin": "ast", "id": "app_utils_excel_export_rationale_134", - "community": 9, + "community": 52, "norm_label": "crm \u5217\u8868\u5bfc\u51fa\u7edf\u4e00\u5165\u53e3:\u8868\u5934 + \u884c\u6570\u636e + \u5b57\u5178 label \u8f6c\u6362 + \u6587\u4ef6\u6d41\u54cd\u5e94\u3002" }, { @@ -39100,7 +39440,7 @@ "source_location": "L1", "_origin": "ast", "id": "scripts_migrate_crm_customer", - "community": 42, + "community": 58, "norm_label": "migrate_crm_customer.py" }, { @@ -39110,7 +39450,7 @@ "source_location": "L79", "_origin": "ast", "id": "scripts_migrate_crm_customer_stepstats", - "community": 42, + "community": 58, "norm_label": "stepstats" }, { @@ -39120,7 +39460,7 @@ "source_location": "L87", "_origin": "ast", "id": "scripts_migrate_crm_customer_migrationstats", - "community": 42, + "community": 58, "norm_label": "migrationstats" }, { @@ -39130,7 +39470,7 @@ "source_location": "L91", "_origin": "ast", "id": "scripts_migrate_crm_customer_migrationstats_step", - "community": 42, + "community": 58, "norm_label": ".step()" }, { @@ -39140,7 +39480,7 @@ "source_location": "L97", "_origin": "ast", "id": "scripts_migrate_crm_customer_legacy_id_to_str", - "community": 42, + "community": 58, "norm_label": "legacy_id_to_str()" }, { @@ -39150,7 +39490,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_customer_py_any", - "community": 42, + "community": 58, "norm_label": "any" }, { @@ -39160,7 +39500,7 @@ "source_location": "L106", "_origin": "ast", "id": "scripts_migrate_crm_customer_derive_source_url", - "community": 42, + "community": 58, "norm_label": "derive_source_url()" }, { @@ -39170,7 +39510,7 @@ "source_location": "L110", "_origin": "ast", "id": "scripts_migrate_crm_customer_load_settings_env", - "community": 42, + "community": 58, "norm_label": "load_settings_env()" }, { @@ -39180,7 +39520,7 @@ "source_location": "L126", "_origin": "ast", "id": "scripts_migrate_crm_customer_load_runtime_settings", - "community": 42, + "community": 58, "norm_label": "load_runtime_settings()" }, { @@ -39190,7 +39530,7 @@ "source_location": "L132", "_origin": "ast", "id": "scripts_migrate_crm_customer_load_user_mapping", - "community": 42, + "community": 58, "norm_label": "load_user_mapping()" }, { @@ -39200,7 +39540,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_customer_py_path", - "community": 42, + "community": 58, "norm_label": "path" }, { @@ -39210,7 +39550,7 @@ "source_location": "L150", "_origin": "ast", "id": "scripts_migrate_crm_customer_fetch_portal_admin_id", - "community": 42, + "community": 58, "norm_label": "fetch_portal_admin_id()" }, { @@ -39220,7 +39560,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_customer_py_engine", - "community": 42, + "community": 58, "norm_label": "engine" }, { @@ -39230,7 +39570,7 @@ "source_location": "L158", "_origin": "ast", "id": "scripts_migrate_crm_customer_resolve_portal_user_id", - "community": 42, + "community": 58, "norm_label": "resolve_portal_user_id()" }, { @@ -39240,7 +39580,7 @@ "source_location": "L184", "_origin": "ast", "id": "scripts_migrate_crm_customer_load_oss_id_to_url", - "community": 42, + "community": 58, "norm_label": "load_oss_id_to_url()" }, { @@ -39250,7 +39590,7 @@ "source_location": "L193", "_origin": "ast", "id": "scripts_migrate_crm_customer_normalize_customer_type", - "community": 42, + "community": 58, "norm_label": "normalize_customer_type()" }, { @@ -39260,7 +39600,7 @@ "source_location": "L210", "_origin": "ast", "id": "scripts_migrate_crm_customer_normalize_follow_type", - "community": 42, + "community": 58, "norm_label": "normalize_follow_type()" }, { @@ -39270,7 +39610,7 @@ "source_location": "L215", "_origin": "ast", "id": "scripts_migrate_crm_customer_dec", - "community": 42, + "community": 58, "norm_label": "_dec()" }, { @@ -39280,7 +39620,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_customer_py_decimal", - "community": 42, + "community": 58, "norm_label": "decimal" }, { @@ -39290,7 +39630,7 @@ "source_location": "L221", "_origin": "ast", "id": "scripts_migrate_crm_customer_str_or_none", - "community": 42, + "community": 58, "norm_label": "_str_or_none()" }, { @@ -39300,7 +39640,7 @@ "source_location": "L230", "_origin": "ast", "id": "scripts_migrate_crm_customer_fetch_source_rows", - "community": 42, + "community": 58, "norm_label": "fetch_source_rows()" }, { @@ -39310,7 +39650,7 @@ "source_location": "L237", "_origin": "ast", "id": "scripts_migrate_crm_customer_target_row_exists", - "community": 42, + "community": 58, "norm_label": "target_row_exists()" }, { @@ -39320,7 +39660,7 @@ "source_location": "L241", "_origin": "ast", "id": "scripts_migrate_crm_customer_transform_customer", - "community": 42, + "community": 58, "norm_label": "transform_customer()" }, { @@ -39330,7 +39670,7 @@ "source_location": "L310", "_origin": "ast", "id": "scripts_migrate_crm_customer_transform_contact", - "community": 42, + "community": 58, "norm_label": "transform_contact()" }, { @@ -39340,7 +39680,7 @@ "source_location": "L354", "_origin": "ast", "id": "scripts_migrate_crm_customer_transform_follow", - "community": 42, + "community": 58, "norm_label": "transform_follow()" }, { @@ -39350,7 +39690,7 @@ "source_location": "L392", "_origin": "ast", "id": "scripts_migrate_crm_customer_transform_pool", - "community": 42, + "community": 58, "norm_label": "transform_pool()" }, { @@ -39360,7 +39700,7 @@ "source_location": "L502", "_origin": "ast", "id": "scripts_migrate_crm_customer_write_mapping_csv", - "community": 42, + "community": 58, "norm_label": "write_mapping_csv()" }, { @@ -39370,7 +39710,7 @@ "source_location": "L513", "_origin": "ast", "id": "scripts_migrate_crm_customer_migrate_table", - "community": 42, + "community": 58, "norm_label": "migrate_table()" }, { @@ -39380,7 +39720,7 @@ "source_location": "L559", "_origin": "ast", "id": "scripts_migrate_crm_customer_print_report", - "community": 42, + "community": 58, "norm_label": "print_report()" }, { @@ -39390,7 +39730,7 @@ "source_location": "L573", "_origin": "ast", "id": "scripts_migrate_crm_customer_run_migration", - "community": 42, + "community": 58, "norm_label": "run_migration()" }, { @@ -39400,7 +39740,7 @@ "source_location": "L615", "_origin": "ast", "id": "scripts_migrate_crm_customer_main", - "community": 42, + "community": 58, "norm_label": "main()" }, { @@ -40470,7 +40810,7 @@ "source_location": "L1", "_origin": "ast", "id": "scripts_migrate_crm_quote", - "community": 42, + "community": 56, "norm_label": "migrate_crm_quote.py" }, { @@ -40480,7 +40820,7 @@ "source_location": "L52", "_origin": "ast", "id": "scripts_migrate_crm_quote_stepstats", - "community": 42, + "community": 56, "norm_label": "stepstats" }, { @@ -40490,7 +40830,7 @@ "source_location": "L60", "_origin": "ast", "id": "scripts_migrate_crm_quote_migrationstats", - "community": 42, + "community": 56, "norm_label": "migrationstats" }, { @@ -40500,7 +40840,7 @@ "source_location": "L64", "_origin": "ast", "id": "scripts_migrate_crm_quote_migrationstats_step", - "community": 42, + "community": 56, "norm_label": ".step()" }, { @@ -40510,7 +40850,7 @@ "source_location": "L70", "_origin": "ast", "id": "scripts_migrate_crm_quote_legacy_id_to_str", - "community": 42, + "community": 56, "norm_label": "legacy_id_to_str()" }, { @@ -40520,7 +40860,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_quote_py_any", - "community": 42, + "community": 56, "norm_label": "any" }, { @@ -40530,7 +40870,7 @@ "source_location": "L79", "_origin": "ast", "id": "scripts_migrate_crm_quote_legacy_parent_id", - "community": 42, + "community": 56, "norm_label": "legacy_parent_id()" }, { @@ -40540,7 +40880,7 @@ "source_location": "L90", "_origin": "ast", "id": "scripts_migrate_crm_quote_derive_source_url", - "community": 42, + "community": 56, "norm_label": "derive_source_url()" }, { @@ -40550,7 +40890,7 @@ "source_location": "L94", "_origin": "ast", "id": "scripts_migrate_crm_quote_load_settings_env", - "community": 42, + "community": 56, "norm_label": "load_settings_env()" }, { @@ -40560,7 +40900,7 @@ "source_location": "L110", "_origin": "ast", "id": "scripts_migrate_crm_quote_load_runtime_settings", - "community": 42, + "community": 56, "norm_label": "load_runtime_settings()" }, { @@ -40570,7 +40910,7 @@ "source_location": "L116", "_origin": "ast", "id": "scripts_migrate_crm_quote_load_user_mapping", - "community": 42, + "community": 56, "norm_label": "load_user_mapping()" }, { @@ -40580,7 +40920,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_quote_py_path", - "community": 42, + "community": 56, "norm_label": "path" }, { @@ -40590,7 +40930,7 @@ "source_location": "L134", "_origin": "ast", "id": "scripts_migrate_crm_quote_fetch_portal_admin_id", - "community": 42, + "community": 56, "norm_label": "fetch_portal_admin_id()" }, { @@ -40600,7 +40940,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_quote_py_engine", - "community": 42, + "community": 56, "norm_label": "engine" }, { @@ -40610,7 +40950,7 @@ "source_location": "L142", "_origin": "ast", "id": "scripts_migrate_crm_quote_resolve_portal_user_id", - "community": 42, + "community": 56, "norm_label": "resolve_portal_user_id()" }, { @@ -40620,7 +40960,7 @@ "source_location": "L167", "_origin": "ast", "id": "scripts_migrate_crm_quote_load_oss_id_to_url", - "community": 42, + "community": 56, "norm_label": "load_oss_id_to_url()" }, { @@ -40630,7 +40970,7 @@ "source_location": "L176", "_origin": "ast", "id": "scripts_migrate_crm_quote_normalize_attachment_csv", - "community": 42, + "community": 56, "norm_label": "normalize_attachment_csv()" }, { @@ -40640,7 +40980,7 @@ "source_location": "L197", "_origin": "ast", "id": "scripts_migrate_crm_quote_normalize_pdf_url", - "community": 42, + "community": 56, "norm_label": "normalize_pdf_url()" }, { @@ -40650,7 +40990,7 @@ "source_location": "L207", "_origin": "ast", "id": "scripts_migrate_crm_quote_dec", - "community": 42, + "community": 56, "norm_label": "_dec()" }, { @@ -40660,7 +41000,7 @@ "source_location": "", "_origin": "ast", "id": "scripts_migrate_crm_quote_py_decimal", - "community": 42, + "community": 56, "norm_label": "decimal" }, { @@ -40670,7 +41010,7 @@ "source_location": "L213", "_origin": "ast", "id": "scripts_migrate_crm_quote_str_or_none", - "community": 42, + "community": 56, "norm_label": "_str_or_none()" }, { @@ -40680,7 +41020,7 @@ "source_location": "L222", "_origin": "ast", "id": "scripts_migrate_crm_quote_fetch_source_rows", - "community": 42, + "community": 56, "norm_label": "fetch_source_rows()" }, { @@ -40690,7 +41030,7 @@ "source_location": "L232", "_origin": "ast", "id": "scripts_migrate_crm_quote_target_row_exists", - "community": 42, + "community": 56, "norm_label": "target_row_exists()" }, { @@ -40700,7 +41040,7 @@ "source_location": "L236", "_origin": "ast", "id": "scripts_migrate_crm_quote_transform_supplier_info", - "community": 42, + "community": 56, "norm_label": "transform_supplier_info()" }, { @@ -40710,7 +41050,7 @@ "source_location": "L273", "_origin": "ast", "id": "scripts_migrate_crm_quote_transform_quote", - "community": 42, + "community": 56, "norm_label": "transform_quote()" }, { @@ -40720,7 +41060,7 @@ "source_location": "L344", "_origin": "ast", "id": "scripts_migrate_crm_quote_transform_quote_product", - "community": 42, + "community": 56, "norm_label": "transform_quote_product()" }, { @@ -40730,7 +41070,7 @@ "source_location": "L389", "_origin": "ast", "id": "scripts_migrate_crm_quote_transform_quote_approval", - "community": 42, + "community": 56, "norm_label": "transform_quote_approval()" }, { @@ -40740,7 +41080,7 @@ "source_location": "L424", "_origin": "ast", "id": "scripts_migrate_crm_quote_transform_quote_share_log", - "community": 42, + "community": 56, "norm_label": "transform_quote_share_log()" }, { @@ -40750,7 +41090,7 @@ "source_location": "L544", "_origin": "ast", "id": "scripts_migrate_crm_quote_write_mapping_csv", - "community": 42, + "community": 56, "norm_label": "write_mapping_csv()" }, { @@ -40760,7 +41100,7 @@ "source_location": "L555", "_origin": "ast", "id": "scripts_migrate_crm_quote_migrate_table", - "community": 42, + "community": 56, "norm_label": "migrate_table()" }, { @@ -40770,7 +41110,7 @@ "source_location": "L601", "_origin": "ast", "id": "scripts_migrate_crm_quote_print_report", - "community": 42, + "community": 56, "norm_label": "print_report()" }, { @@ -40780,7 +41120,7 @@ "source_location": "L615", "_origin": "ast", "id": "scripts_migrate_crm_quote_run_migration", - "community": 42, + "community": 56, "norm_label": "run_migration()" }, { @@ -40790,7 +41130,7 @@ "source_location": "L661", "_origin": "ast", "id": "scripts_migrate_crm_quote_main", - "community": 42, + "community": 56, "norm_label": "main()" }, { @@ -40810,7 +41150,7 @@ "source_location": "L53", "_origin": "ast", "id": "scripts_migrate_crm_sys_oss_backfillrule", - "community": 100, + "community": 46, "norm_label": "backfillrule" }, { @@ -41690,7 +42030,7 @@ "source_location": "L1", "_origin": "ast", "id": "scripts_migration_minio_url", - "community": 42, + "community": 109, "norm_label": "minio_url.py" }, { @@ -41700,7 +42040,7 @@ "source_location": "L39", "_origin": "ast", "id": "scripts_migration_minio_url_strip_url_query", - "community": 42, + "community": 109, "norm_label": "strip_url_query()" }, { @@ -41710,7 +42050,7 @@ "source_location": "L47", "_origin": "ast", "id": "scripts_migration_minio_url_strip_legacy_prefix", - "community": 42, + "community": 109, "norm_label": "_strip_legacy_prefix()" }, { @@ -41720,7 +42060,7 @@ "source_location": "L55", "_origin": "ast", "id": "scripts_migration_minio_url_extract_minio_object_key", - "community": 42, + "community": 109, "norm_label": "extract_minio_object_key()" }, { @@ -41730,7 +42070,7 @@ "source_location": "L83", "_origin": "ast", "id": "scripts_migration_minio_url_normalize_oss_storage_url", - "community": 42, + "community": 109, "norm_label": "normalize_oss_storage_url()" }, { @@ -41740,7 +42080,7 @@ "source_location": "L96", "_origin": "ast", "id": "scripts_migration_minio_url_join_relative_urls", - "community": 42, + "community": 109, "norm_label": "join_relative_urls()" }, { @@ -41750,7 +42090,7 @@ "source_location": "L109", "_origin": "ast", "id": "scripts_migration_minio_url_resolve_oss_id_csv", - "community": 42, + "community": 109, "norm_label": "resolve_oss_id_csv()" }, { @@ -41760,7 +42100,7 @@ "source_location": "L1", "_origin": "ast", "id": "scripts_migration_minio_url_rationale_1", - "community": 42, + "community": 109, "norm_label": "minio \u9644\u4ef6 url \u89c4\u8303\u5316(\u6570\u636e\u8fc1\u79fb\u5171\u7528)\u3002 \u80cc\u666f ---- crm / \u5730\u78c5 / \u62a5\u9500\u4e0e shanxia2.0 \u5171\u7528\u540c\u4e00 minio(bucket \u9ed8" }, { @@ -41770,7 +42110,7 @@ "source_location": "L40", "_origin": "ast", "id": "scripts_migration_minio_url_rationale_40", - "community": 42, + "community": 109, "norm_label": "\u53bb\u6389\u9884\u7b7e\u540d query(``?x-amz-...``)\u3002" }, { @@ -41780,7 +42120,7 @@ "source_location": "L61", "_origin": "ast", "id": "scripts_migration_minio_url_rationale_61", - "community": 42, + "community": 109, "norm_label": "\u5c06\u7edd\u5bf9/\u76f8\u5bf9 url \u89c4\u8303\u4e3a minio object key(\u4e0d\u542b bucket)\u3002" }, { @@ -41790,7 +42130,7 @@ "source_location": "L89", "_origin": "ast", "id": "scripts_migration_minio_url_rationale_89", - "community": 42, + "community": 109, "norm_label": "\u8fc1\u79fb crm ``sys_oss`` \u884c:``url`` + ``file_name`` \u2192 \u95e8\u6237\u76f8\u5bf9\u8def\u5f84\u3002" }, { @@ -41800,7 +42140,7 @@ "source_location": "L113", "_origin": "ast", "id": "scripts_migration_minio_url_rationale_113", - "community": 42, + "community": 109, "norm_label": "\u4e1a\u52a1\u8868 oss id \u4e32 \u2192 \u76f8\u5bf9 url \u4e32(\u7528\u4e8e\u5ba2\u6237\u8bc1\u7167\u3001\u8ddf\u8fdb\u9644\u4ef6\u7b49)\u3002" }, { @@ -42482,7 +42822,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_bx_invoice_ledger", - "community": 50, + "community": 43, "norm_label": "test_bx_invoice_ledger.py" }, { @@ -42492,7 +42832,7 @@ "source_location": "L14", "_origin": "ast", "id": "tests_test_bx_invoice_ledger_test_summarize_upload_and_reimburse", - "community": 50, + "community": 43, "norm_label": "test_summarize_upload_and_reimburse()" }, { @@ -42502,7 +42842,7 @@ "source_location": "L25", "_origin": "ast", "id": "tests_test_bx_invoice_ledger_test_summarize_delete_and_release", - "community": 50, + "community": 43, "norm_label": "test_summarize_delete_and_release()" }, { @@ -42512,7 +42852,7 @@ "source_location": "L38", "_origin": "ast", "id": "tests_test_bx_invoice_ledger_test_release_idempotent_guard", - "community": 50, + "community": 43, "norm_label": "test_release_idempotent_guard()" }, { @@ -42522,7 +42862,7 @@ "source_location": "L44", "_origin": "ast", "id": "tests_test_bx_invoice_ledger_test_summarize_allows_negative_balance", - "community": 50, + "community": 43, "norm_label": "test_summarize_allows_negative_balance()" }, { @@ -42532,7 +42872,7 @@ "source_location": "L45", "_origin": "ast", "id": "tests_test_bx_invoice_ledger_rationale_45", - "community": 50, + "community": 43, "norm_label": "\u63d0\u4ea4\u5360\u7528\u53ef\u8d85\u8fc7\u5df2\u4e0a\u4f20\u603b\u989d,\u4f59\u989d\u53ef\u4e3a\u8d1f(\u8865\u7968\u540e\u518d\u56de\u5347)\u3002" }, { @@ -42542,7 +42882,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_bx_optional_date", - "community": 47, + "community": 17, "norm_label": "test_bx_optional_date.py" }, { @@ -42552,7 +42892,7 @@ "source_location": "L8", "_origin": "ast", "id": "tests_test_bx_optional_date_test_parse_optional_date_none_and_blank", - "community": 47, + "community": 17, "norm_label": "test_parse_optional_date_none_and_blank()" }, { @@ -42562,7 +42902,7 @@ "source_location": "L14", "_origin": "ast", "id": "tests_test_bx_optional_date_test_parse_optional_date_string_and_date", - "community": 47, + "community": 17, "norm_label": "test_parse_optional_date_string_and_date()" }, { @@ -42572,7 +42912,7 @@ "source_location": "L20", "_origin": "ast", "id": "tests_test_bx_optional_date_test_parse_optional_date_invalid", - "community": 47, + "community": 17, "norm_label": "test_parse_optional_date_invalid()" }, { @@ -43232,7 +43572,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_crm_product_options_keyword", - "community": 101, + "community": 21, "norm_label": "test_crm_product_options_keyword.py" }, { @@ -43242,7 +43582,7 @@ "source_location": "L9", "_origin": "ast", "id": "tests_test_crm_product_options_keyword_test_list_product_options_keyword_only_filters_product_name", - "community": 101, + "community": 21, "norm_label": "test_list_product_options_keyword_only_filters_product_name()" }, { @@ -43252,7 +43592,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_crm_product_options_keyword_rationale_1", - "community": 101, + "community": 21, "norm_label": "\u4ea7\u54c1\u4e0b\u62c9 options:keyword \u6309\u4ea7\u54c1\u540d\u79f0/\u62fc\u97f3\u9996\u5b57\u6bcd\u6a21\u7cca\u5339\u914d,\u4e0d\u5339\u914d\u4ea7\u54c1\u7f16\u53f7\u3002" }, { @@ -43332,7 +43672,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_crm_supplier_hazard", - "community": 55, + "community": 102, "norm_label": "test_crm_supplier_hazard.py" }, { @@ -43342,7 +43682,7 @@ "source_location": "L4", "_origin": "ast", "id": "tests_test_crm_supplier_hazard_test_plain_always_allowed", - "community": 55, + "community": 102, "norm_label": "test_plain_always_allowed()" }, { @@ -43352,7 +43692,7 @@ "source_location": "L8", "_origin": "ast", "id": "tests_test_crm_supplier_hazard_test_toxic_only_requires_allow_toxic", - "community": 55, + "community": 102, "norm_label": "test_toxic_only_requires_allow_toxic()" }, { @@ -43362,7 +43702,7 @@ "source_location": "L13", "_origin": "ast", "id": "tests_test_crm_supplier_hazard_test_explosive_only_requires_allow_explosive", - "community": 55, + "community": 102, "norm_label": "test_explosive_only_requires_allow_explosive()" }, { @@ -43372,7 +43712,7 @@ "source_location": "L18", "_origin": "ast", "id": "tests_test_crm_supplier_hazard_test_dual_requires_both", - "community": 55, + "community": 102, "norm_label": "test_dual_requires_both()" }, { @@ -43532,7 +43872,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_db_resolve_crm_product", - "community": 80, + "community": 62, "norm_label": "test_db_resolve_crm_product.py" }, { @@ -43542,7 +43882,7 @@ "source_location": "L13", "_origin": "ast", "id": "tests_test_db_resolve_crm_product_product", - "community": 80, + "community": 62, "norm_label": "_product()" }, { @@ -43552,7 +43892,7 @@ "source_location": "L25", "_origin": "ast", "id": "tests_test_db_resolve_crm_product_test_resolve_rejects_off_shelf_by_default", - "community": 80, + "community": 62, "norm_label": "test_resolve_rejects_off_shelf_by_default()" }, { @@ -43562,7 +43902,7 @@ "source_location": "L34", "_origin": "ast", "id": "tests_test_db_resolve_crm_product_test_resolve_allows_off_shelf_when_not_required", - "community": 80, + "community": 62, "norm_label": "test_resolve_allows_off_shelf_when_not_required()" }, { @@ -43572,7 +43912,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_db_resolve_crm_product_rationale_1", - "community": 80, + "community": 62, "norm_label": "resolve_crm_product:\u8fd0\u8f93\u8054\u52a8\u573a\u666f\u5141\u8bb8\u5df2\u4e0b\u67b6\u4ea7\u54c1\u3002" }, { @@ -43662,177 +44002,257 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_duty_schedule", - "community": 26, + "community": 44, "norm_label": "test_duty_schedule.py" }, + { + "label": "test_parse_hhmm()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L38", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_parse_hhmm", + "community": 44, + "norm_label": "test_parse_hhmm()" + }, + { + "label": "test_format_time_label_same_day()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L45", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_format_time_label_same_day", + "community": 44, + "norm_label": "test_format_time_label_same_day()" + }, + { + "label": "test_format_time_label_cross_day()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L49", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_format_time_label_cross_day", + "community": 44, + "norm_label": "test_format_time_label_cross_day()" + }, + { + "label": "test_format_time_label_empty()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L53", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_format_time_label_empty", + "community": 44, + "norm_label": "test_format_time_label_empty()" + }, + { + "label": "test_work_plans_join_split()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L57", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_work_plans_join_split", + "community": 44, + "norm_label": "test_work_plans_join_split()" + }, + { + "label": "test_build_dict_value_from_label()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L63", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_build_dict_value_from_label", + "community": 44, + "norm_label": "test_build_dict_value_from_label()" + }, + { + "label": "test_ensure_dict_data_reuses_existing_label()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L69", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", + "community": 44, + "norm_label": "test_ensure_dict_data_reuses_existing_label()" + }, + { + "label": "test_ensure_dict_data_inserts_new_without_commit()", + "file_type": "code", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L83", + "_origin": "ast", + "id": "tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", + "community": 44, + "norm_label": "test_ensure_dict_data_inserts_new_without_commit()" + }, { "label": "test_normalize_person_name_ok()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L31", + "source_location": "L103", "_origin": "ast", "id": "tests_test_duty_schedule_test_normalize_person_name_ok", - "community": 26, + "community": 44, "norm_label": "test_normalize_person_name_ok()" }, { "label": "test_normalize_person_name_empty()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L35", + "source_location": "L107", "_origin": "ast", "id": "tests_test_duty_schedule_test_normalize_person_name_empty", - "community": 26, + "community": 44, "norm_label": "test_normalize_person_name_empty()" }, { "label": "test_normalize_person_name_too_long()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L40", + "source_location": "L112", "_origin": "ast", "id": "tests_test_duty_schedule_test_normalize_person_name_too_long", - "community": 26, + "community": 44, "norm_label": "test_normalize_person_name_too_long()" }, { "label": "test_shift_labels()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L45", + "source_location": "L117", "_origin": "ast", "id": "tests_test_duty_schedule_test_shift_labels", - "community": 26, + "community": 44, "norm_label": "test_shift_labels()" }, { "label": "test_grab_rejects_when_full()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L49", + "source_location": "L121", "_origin": "ast", "id": "tests_test_duty_schedule_test_grab_rejects_when_full", - "community": 26, + "community": 44, "norm_label": "test_grab_rejects_when_full()" }, { "label": "test_grab_rejects_when_closed()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L111", + "source_location": "L183", "_origin": "ast", "id": "tests_test_duty_schedule_test_grab_rejects_when_closed", - "community": 26, + "community": 44, "norm_label": "test_grab_rejects_when_closed()" }, { "label": "test_grab_rejects_invalid_user()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L129", + "source_location": "L201", "_origin": "ast", "id": "tests_test_duty_schedule_test_grab_rejects_invalid_user", - "community": 26, + "community": 44, "norm_label": "test_grab_rejects_invalid_user()" }, { "label": "test_grab_rejects_duplicate_same_shift()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L158", + "source_location": "L230", "_origin": "ast", "id": "tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", - "community": 26, + "community": 44, "norm_label": "test_grab_rejects_duplicate_same_shift()" }, { "label": "test_save_day_rejects_shrink_below_grab_count()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L224", + "source_location": "L296", "_origin": "ast", "id": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", - "community": 26, + "community": 66, "norm_label": "test_save_day_rejects_shrink_below_grab_count()" }, { "label": "test_resolve_duty_staff_role_id_by_fixed_id()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L298", + "source_location": "L370", "_origin": "ast", "id": "tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", - "community": 26, + "community": 44, "norm_label": "test_resolve_duty_staff_role_id_by_fixed_id()" }, { "label": "test_list_duty_staff_users_empty_when_no_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L307", + "source_location": "L379", "_origin": "ast", "id": "tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", - "community": 26, + "community": 44, "norm_label": "test_list_duty_staff_users_empty_when_no_role()" }, { "label": "test_assert_user_is_duty_staff_rejects_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L315", + "source_location": "L387", "_origin": "ast", "id": "tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", - "community": 26, + "community": 44, "norm_label": "test_assert_user_is_duty_staff_rejects_without_role()" }, { "label": "test_grab_rejects_non_duty_staff()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L336", + "source_location": "L408", "_origin": "ast", "id": "tests_test_duty_schedule_test_grab_rejects_non_duty_staff", - "community": 26, + "community": 44, "norm_label": "test_grab_rejects_non_duty_staff()" }, { "label": "test_save_day_grandfathers_existing_assign_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L381", + "source_location": "L453", "_origin": "ast", "id": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", - "community": 26, + "community": 66, "norm_label": "test_save_day_grandfathers_existing_assign_without_role()" }, { "label": "test_save_day_rejects_new_assign_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", - "source_location": "L469", + "source_location": "L541", "_origin": "ast", "id": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", - "community": 26, + "community": 66, "norm_label": "test_save_day_rejects_new_assign_without_role()" }, { "label": "\u7f29\u5bb9\uff1a\u5df2\u6709 1 \u4eba\u62a2\u73ed\u65f6 capacity=1 \u4e14\u518d\u6307\u5b9a 1 \u4eba\u5e94\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", - "source_location": "L225", + "source_location": "L297", "_origin": "ast", - "id": "tests_test_duty_schedule_rationale_225", - "community": 26, + "id": "tests_test_duty_schedule_rationale_297", + "community": 66, "norm_label": "\u7f29\u5bb9:\u5df2\u6709 1 \u4eba\u62a2\u73ed\u65f6 capacity=1 \u4e14\u518d\u6307\u5b9a 1 \u4eba\u5e94\u5931\u8d25\u3002" }, { "label": "\u5386\u53f2\u6307\u5b9a\u7528\u6237\u65e0\u503c\u73ed\u4eba\u5458\u89d2\u8272\u65f6\uff0c\u539f\u6837\u518d\u4fdd\u5b58\u4e0d\u5f97\u56e0\u89d2\u8272\u6821\u9a8c\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", - "source_location": "L382", + "source_location": "L454", "_origin": "ast", - "id": "tests_test_duty_schedule_rationale_382", - "community": 26, + "id": "tests_test_duty_schedule_rationale_454", + "community": 66, "norm_label": "\u5386\u53f2\u6307\u5b9a\u7528\u6237\u65e0\u503c\u73ed\u4eba\u5458\u89d2\u8272\u65f6,\u539f\u6837\u518d\u4fdd\u5b58\u4e0d\u5f97\u56e0\u89d2\u8272\u6821\u9a8c\u5931\u8d25\u3002" }, { @@ -43842,7 +44262,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_id_card_age", - "community": 109, + "community": 82, "norm_label": "test_id_card_age.py" }, { @@ -43852,7 +44272,7 @@ "source_location": "L6", "_origin": "ast", "id": "tests_test_id_card_age_test_calc_age_from_18_digit_id", - "community": 109, + "community": 82, "norm_label": "test_calc_age_from_18_digit_id()" }, { @@ -43862,7 +44282,7 @@ "source_location": "L14", "_origin": "ast", "id": "tests_test_id_card_age_test_calc_age_rejects_invalid", - "community": 109, + "community": 82, "norm_label": "test_calc_age_rejects_invalid()" }, { @@ -43982,7 +44402,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_brand_archive", - "community": 17, + "community": 80, "norm_label": "test_pl_brand_archive.py" }, { @@ -43992,7 +44412,7 @@ "source_location": "L8", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_required_allows_other_brand_when_sum_matches", - "community": 17, + "community": 80, "norm_label": "test_required_allows_other_brand_when_sum_matches()" }, { @@ -44002,7 +44422,7 @@ "source_location": "L17", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_required_allows_multi_brand_when_sum_matches", - "community": 17, + "community": 80, "norm_label": "test_required_allows_multi_brand_when_sum_matches()" }, { @@ -44012,7 +44432,7 @@ "source_location": "L29", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_required_sum_must_match", - "community": 17, + "community": 80, "norm_label": "test_required_sum_must_match()" }, { @@ -44022,7 +44442,7 @@ "source_location": "L42", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_any_sum_must_match", - "community": 17, + "community": 80, "norm_label": "test_any_sum_must_match()" }, { @@ -44032,7 +44452,7 @@ "source_location": "L55", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_any_ok", - "community": 17, + "community": 80, "norm_label": "test_any_ok()" }, { @@ -44042,7 +44462,7 @@ "source_location": "L67", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_no_brand_ignores_rows", - "community": 17, + "community": 80, "norm_label": "test_no_brand_ignores_rows()" }, { @@ -44052,7 +44472,7 @@ "source_location": "L76", "_origin": "ast", "id": "tests_test_pl_brand_archive_test_delta_for_plan_type", - "community": 17, + "community": 80, "norm_label": "test_delta_for_plan_type()" }, { @@ -44172,7 +44592,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty", - "community": 17, + "community": 41, "norm_label": "test_pl_feedback_brand_qty.py" }, { @@ -44182,7 +44602,7 @@ "source_location": "L8", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_format_brand_qty_summary", - "community": 17, + "community": 41, "norm_label": "test_format_brand_qty_summary()" }, { @@ -44192,7 +44612,7 @@ "source_location": "L16", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_format_brand_qty_summary_empty", - "community": 17, + "community": 41, "norm_label": "test_format_brand_qty_summary_empty()" }, { @@ -44202,7 +44622,7 @@ "source_location": "L20", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_format_brand_qty_summary_zero_only", - "community": 17, + "community": 41, "norm_label": "test_format_brand_qty_summary_zero_only()" }, { @@ -44212,7 +44632,7 @@ "source_location": "L24", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_require_skips_when_no_brand_mode", - "community": 17, + "community": 41, "norm_label": "test_require_skips_when_no_brand_mode()" }, { @@ -44222,7 +44642,7 @@ "source_location": "L34", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_require_skips_when_not_enforced", - "community": 17, + "community": 41, "norm_label": "test_require_skips_when_not_enforced()" }, { @@ -44232,7 +44652,7 @@ "source_location": "L44", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_require_enforces_when_completed", - "community": 17, + "community": 41, "norm_label": "test_require_enforces_when_completed()" }, { @@ -44242,7 +44662,7 @@ "source_location": "L55", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_require_calls_validate_when_positive_rows", - "community": 17, + "community": 41, "norm_label": "test_require_calls_validate_when_positive_rows()" }, { @@ -44252,7 +44672,7 @@ "source_location": "L78", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_test_persist_io_item_brand_qtys_writes_when_brand_mode_missing", - "community": 17, + "community": 41, "norm_label": "test_persist_io_item_brand_qtys_writes_when_brand_mode_missing()" }, { @@ -44262,7 +44682,7 @@ "source_location": "L79", "_origin": "ast", "id": "tests_test_pl_feedback_brand_qty_rationale_79", - "community": 17, + "community": 41, "norm_label": "\u8ba1\u5212\u884c brand_mode \u4e22\u5931\u65f6,\u5ba2\u6237\u7aef\u63d0\u4ea4\u7684\u591a\u54c1\u724c\u660e\u7ec6\u4ecd\u5e94\u843d\u5e93(\u4e0d\u80fd\u53ea\u8f6f\u5220\u4e0d\u5199)\u3002" }, { @@ -44342,7 +44762,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status", - "community": 45, + "community": 91, "norm_label": "test_pl_io_order_site_feedback_status.py" }, { @@ -44352,7 +44772,7 @@ "source_location": "L11", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_header", - "community": 45, + "community": 91, "norm_label": "_header()" }, { @@ -44362,7 +44782,7 @@ "source_location": "L26", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_item", - "community": 45, + "community": 91, "norm_label": "_item()" }, { @@ -44372,7 +44792,7 @@ "source_location": "L36", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_test_apply_site_feedback_sets_status_completed", - "community": 45, + "community": 91, "norm_label": "test_apply_site_feedback_sets_status_completed()" }, { @@ -44382,7 +44802,7 @@ "source_location": "L57", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_test_apply_site_feedback_sets_status_voided", - "community": 45, + "community": 91, "norm_label": "test_apply_site_feedback_sets_status_voided()" }, { @@ -44392,7 +44812,7 @@ "source_location": "L72", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_test_apply_site_feedback_keeps_in_progress_when_requested", - "community": 45, + "community": 91, "norm_label": "test_apply_site_feedback_keeps_in_progress_when_requested()" }, { @@ -44402,7 +44822,7 @@ "source_location": "L89", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_test_apply_site_feedback_rejects_invalid_status", - "community": 45, + "community": 91, "norm_label": "test_apply_site_feedback_rejects_invalid_status()" }, { @@ -44412,7 +44832,7 @@ "source_location": "L104", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_test_apply_site_feedback_rejects_already_voided", - "community": 45, + "community": 91, "norm_label": "test_apply_site_feedback_rejects_already_voided()" }, { @@ -44422,7 +44842,7 @@ "source_location": "L119", "_origin": "ast", "id": "tests_test_pl_io_order_site_feedback_status_test_apply_site_feedback_does_not_reset_first_submitted_at", - "community": 45, + "community": 91, "norm_label": "test_apply_site_feedback_does_not_reset_first_submitted_at()" }, { @@ -44532,7 +44952,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_plan_cert_list_filters", - "community": 125, + "community": 5, "norm_label": "test_pl_plan_cert_list_filters.py" }, { @@ -44542,7 +44962,7 @@ "source_location": "L12", "_origin": "ast", "id": "tests_test_pl_plan_cert_list_filters_compile", - "community": 125, + "community": 5, "norm_label": "_compile()" }, { @@ -44552,7 +44972,7 @@ "source_location": "L18", "_origin": "ast", "id": "tests_test_pl_plan_cert_list_filters_test_plan_has_hazard_product_exists_joins_crm_flags", - "community": 125, + "community": 5, "norm_label": "test_plan_has_hazard_product_exists_joins_crm_flags()" }, { @@ -44562,7 +44982,7 @@ "source_location": "L29", "_origin": "ast", "id": "tests_test_pl_plan_cert_list_filters_test_plan_has_incomplete_hazard_cert_exists_checks_required_urls", - "community": 125, + "community": 5, "norm_label": "test_plan_has_incomplete_hazard_cert_exists_checks_required_urls()" }, { @@ -44572,7 +44992,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_plan_cert_list_filters_rationale_1", - "community": 125, + "community": 5, "norm_label": "\u5371\u5316\u54c1\u8bc1\u4e0a\u4f20\u5217\u8868\u7b5b\u9009:exists \u5b50\u67e5\u8be2\u5e94\u8986\u76d6 crm \u5371\u5316\u6807\u8bc6\u4e0e\u8bc1\u4e66\u7f3a\u53e3\u3002" }, { @@ -44582,49 +45002,79 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_plan_contract_gap", - "community": 103, + "community": 47, "norm_label": "test_pl_plan_contract_gap.py" }, { "label": "test_both_external_no_contracts_gaps_both()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L7", + "source_location": "L9", "_origin": "ast", "id": "tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", - "community": 103, + "community": 47, "norm_label": "test_both_external_no_contracts_gaps_both()" }, { "label": "test_internal_supplier_external_demander_missing_only_demander()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L17", + "source_location": "L19", "_origin": "ast", "id": "tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", - "community": 103, + "community": 47, "norm_label": "test_internal_supplier_external_demander_missing_only_demander()" }, { "label": "test_both_internal_no_gap()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L27", + "source_location": "L29", "_origin": "ast", "id": "tests_test_pl_plan_contract_gap_test_both_internal_no_gap", - "community": 103, + "community": 47, "norm_label": "test_both_internal_no_gap()" }, { "label": "test_external_with_contracts_no_gap()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L37", + "source_location": "L39", "_origin": "ast", "id": "tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", - "community": 103, + "community": 47, "norm_label": "test_external_with_contracts_no_gap()" }, + { + "label": "test_empty_names_treated_as_non_internal_gap_both()", + "file_type": "code", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L49", + "_origin": "ast", + "id": "tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", + "community": 47, + "norm_label": "test_empty_names_treated_as_non_internal_gap_both()" + }, + { + "label": "_compile()", + "file_type": "code", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L59", + "_origin": "ast", + "id": "tests_test_pl_plan_contract_gap_compile", + "community": 47, + "norm_label": "_compile()" + }, + { + "label": "test_plan_has_contract_gap_exists_mentions_contract_and_internal_names()", + "file_type": "code", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L65", + "_origin": "ast", + "id": "tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", + "community": 47, + "norm_label": "test_plan_has_contract_gap_exists_mentions_contract_and_internal_names()" + }, { "label": "test_pl_plan_create_date.py", "file_type": "code", @@ -44662,7 +45112,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_plan_resolve_driver", - "community": 5, + "community": 103, "norm_label": "test_pl_plan_resolve_driver.py" }, { @@ -44672,7 +45122,7 @@ "source_location": "L9", "_origin": "ast", "id": "tests_test_pl_plan_resolve_driver_test_resolve_driver_without_vehicle_link_returns_none", - "community": 5, + "community": 103, "norm_label": "test_resolve_driver_without_vehicle_link_returns_none()" }, { @@ -44682,7 +45132,7 @@ "source_location": "L19", "_origin": "ast", "id": "tests_test_pl_plan_resolve_driver_test_resolve_driver_with_explicit_id_returns_personnel", - "community": 5, + "community": 103, "norm_label": "test_resolve_driver_with_explicit_id_returns_personnel()" }, { @@ -44692,7 +45142,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_plan_resolve_driver_rationale_1", - "community": 5, + "community": 103, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u89e3\u6790\u53f8\u673a:\u8f66\u8f86\u672a\u5173\u8054\u53f8\u673a\u65f6\u5141\u8bb8\u4e3a\u7a7a\u3002" }, { @@ -44702,7 +45152,7 @@ "source_location": "L10", "_origin": "ast", "id": "tests_test_pl_plan_resolve_driver_rationale_10", - "community": 5, + "community": 103, "norm_label": "\u672a\u663e\u5f0f\u9009\u53f8\u673a\u3001\u8f66\u8f86\u4e5f\u65e0\u5173\u8054\u53f8\u673a\u65f6,\u5e94\u8fd4\u56de\u7a7a\u4e09\u5143\u7ec4\u800c\u975e 400\u3002" }, { @@ -44712,7 +45162,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_public_link_archived", - "community": 174, + "community": 79, "norm_label": "test_pl_public_link_archived.py" }, { @@ -44722,7 +45172,7 @@ "source_location": "L10", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_driver_link_flags_archived_when_plan_archived", - "community": 174, + "community": 79, "norm_label": "test_driver_link_flags_archived_when_plan_archived()" }, { @@ -44732,7 +45182,7 @@ "source_location": "L18", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_driver_link_flags_voided_takes_precedence_shape", - "community": 174, + "community": 79, "norm_label": "test_driver_link_flags_voided_takes_precedence_shape()" }, { @@ -44742,7 +45192,7 @@ "source_location": "L26", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_driver_link_flags_voided_by_transport_cancelled", - "community": 174, + "community": 79, "norm_label": "test_driver_link_flags_voided_by_transport_cancelled()" }, { @@ -44752,7 +45202,7 @@ "source_location": "L34", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_site_link_flags_archived_when_plan_archived", - "community": 174, + "community": 79, "norm_label": "test_site_link_flags_archived_when_plan_archived()" }, { @@ -44762,7 +45212,7 @@ "source_location": "L41", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_site_link_flags_voided_when_cancelled", - "community": 174, + "community": 79, "norm_label": "test_site_link_flags_voided_when_cancelled()" }, { @@ -44772,7 +45222,7 @@ "source_location": "L48", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_site_link_flags_false_when_no_plan", - "community": 174, + "community": 79, "norm_label": "test_site_link_flags_false_when_no_plan()" }, { @@ -44782,7 +45232,7 @@ "source_location": "L54", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_public_transport_page_schema_exposes_plan_archived", - "community": 174, + "community": 79, "norm_label": "test_public_transport_page_schema_exposes_plan_archived()" }, { @@ -44792,7 +45242,7 @@ "source_location": "L64", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_public_site_page_schema_exposes_archived", - "community": 174, + "community": 79, "norm_label": "test_public_site_page_schema_exposes_archived()" }, { @@ -44802,7 +45252,7 @@ "source_location": "L75", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_io_order_link_flags_archived_when_plan_archived", - "community": 174, + "community": 79, "norm_label": "test_io_order_link_flags_archived_when_plan_archived()" }, { @@ -44812,7 +45262,7 @@ "source_location": "L83", "_origin": "ast", "id": "tests_test_pl_public_link_archived_test_io_order_link_flags_voided_by_header_or_plan", - "community": 174, + "community": 79, "norm_label": "test_io_order_link_flags_voided_by_header_or_plan()" }, { @@ -44822,9 +45272,69 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_pl_public_link_archived_rationale_1", - "community": 174, + "community": 79, "norm_label": "\u8fd0\u8f93\u8ba1\u5212\u53f8\u673a/\u73b0\u573a\u516c\u5171\u94fe\u63a5:\u5f52\u6863\u540e\u5e94\u6807\u8bb0\u5e76\u62e6\u622a\u5199\u64cd\u4f5c\u3002" }, + { + "label": "test_pl_trailer_cert_rules.py", + "file_type": "code", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L1", + "_origin": "ast", + "id": "tests_test_pl_trailer_cert_rules", + "community": 119, + "norm_label": "test_pl_trailer_cert_rules.py" + }, + { + "label": "_complete_self_head_certs()", + "file_type": "code", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L15", + "_origin": "ast", + "id": "tests_test_pl_trailer_cert_rules_complete_self_head_certs", + "community": 119, + "norm_label": "_complete_self_head_certs()" + }, + { + "label": "test_huolala_trailer_helpers()", + "file_type": "code", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L23", + "_origin": "ast", + "id": "tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", + "community": 119, + "norm_label": "test_huolala_trailer_helpers()" + }, + { + "label": "test_self_huolala_skips_trailer_required_certs()", + "file_type": "code", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L34", + "_origin": "ast", + "id": "tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", + "community": 119, + "norm_label": "test_self_huolala_skips_trailer_required_certs()" + }, + { + "label": "test_self_normal_trailer_requires_trailer_certs()", + "file_type": "code", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L41", + "_origin": "ast", + "id": "tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", + "community": 119, + "norm_label": "test_self_normal_trailer_requires_trailer_certs()" + }, + { + "label": "\u6302\u8f66\u53f7\u5206\u6d41\uff1a\u8d27\u62c9\u62c9\u514d\u6302\u8f66\u8bc1\uff1b\u81ea\u6709\u6b63\u5e38\u6302\u8f66\u53f7\u5f3a\u5236\uff1b\u4e09\u65b9\u4e0d\u5f3a\u5236\u3002", + "file_type": "rationale", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L1", + "_origin": "ast", + "id": "tests_test_pl_trailer_cert_rules_rationale_1", + "community": 119, + "norm_label": "\u6302\u8f66\u53f7\u5206\u6d41:\u8d27\u62c9\u62c9\u514d\u6302\u8f66\u8bc1;\u81ea\u6709\u6b63\u5e38\u6302\u8f66\u53f7\u5f3a\u5236;\u4e09\u65b9\u4e0d\u5f3a\u5236\u3002" + }, { "label": "test_pl_transport_arrange_optional_driver.py", "file_type": "code", @@ -44972,7 +45482,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_public_db_vehicle_plates", - "community": 38, + "community": 120, "norm_label": "test_public_db_vehicle_plates.py" }, { @@ -44982,7 +45492,7 @@ "source_location": "L9", "_origin": "ast", "id": "tests_test_public_db_vehicle_plates_test_vehicle_plates_requires_inventory_or_plan_id", - "community": 38, + "community": 120, "norm_label": "test_vehicle_plates_requires_inventory_or_plan_id()" }, { @@ -44992,7 +45502,7 @@ "source_location": "L1", "_origin": "ast", "id": "tests_test_public_db_vehicle_plates_rationale_1", - "community": 38, + "community": 120, "norm_label": "\u514d\u767b\u8f66\u724c options \u63a5\u53e3\u5165\u53c2\u6821\u9a8c(\u4e0d\u4f9d\u8d56\u771f\u5b9e db \u6570\u636e)\u3002" }, { @@ -45498,7 +46008,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1398", + "source_location": "L1429", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_attachment_download_url", @@ -45508,7 +46018,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1424", + "source_location": "L1455", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_attachment_preview_url", @@ -45518,7 +46028,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1391", + "source_location": "L1422", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_attachmentdownloadurlbody", @@ -45528,7 +46038,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L714", + "source_location": "L728", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_dept", @@ -45538,7 +46048,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L575", + "source_location": "L589", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_dict_data", @@ -45548,7 +46058,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L472", + "source_location": "L486", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_dict_type", @@ -45558,7 +46068,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1085", + "source_location": "L1099", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_menu", @@ -45568,7 +46078,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1462", + "source_location": "L1493", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_menu_favorite", @@ -45578,7 +46088,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L937", + "source_location": "L951", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_post", @@ -45588,7 +46098,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1207", + "source_location": "L1221", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_role_management", @@ -45598,7 +46108,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L828", + "source_location": "L842", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_site", @@ -45618,7 +46128,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L344", + "source_location": "L358", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_create_user", @@ -45628,7 +46138,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L766", + "source_location": "L780", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_dept", @@ -45638,7 +46148,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L623", + "source_location": "L637", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_dict_data", @@ -45648,7 +46158,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L519", + "source_location": "L533", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_dict_type", @@ -45658,7 +46168,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1144", + "source_location": "L1158", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_menu", @@ -45668,7 +46178,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1508", + "source_location": "L1539", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_menu_favorite", @@ -45678,7 +46188,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L984", + "source_location": "L998", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_post", @@ -45688,7 +46198,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1254", + "source_location": "L1285", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_role_management", @@ -45698,7 +46208,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L885", + "source_location": "L899", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_site", @@ -45718,7 +46228,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L407", + "source_location": "L421", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_delete_user", @@ -45728,7 +46238,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L677", + "source_location": "L691", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_deptcreatebody", @@ -45738,7 +46248,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L690", + "source_location": "L704", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_deptupdatebody", @@ -45748,7 +46258,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L650", + "source_location": "L664", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_dict_data_all", @@ -45758,7 +46268,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L636", + "source_location": "L650", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_dict_data_options", @@ -45768,7 +46278,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L536", + "source_location": "L550", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_dictdatacreatebody", @@ -45778,7 +46288,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L547", + "source_location": "L561", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_dictdataupdatebody", @@ -45788,7 +46298,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L437", + "source_location": "L451", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_dicttypecreatebody", @@ -45798,7 +46308,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L446", + "source_location": "L460", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_dicttypeupdatebody", @@ -45808,7 +46318,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1331", + "source_location": "L1362", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_format_file_size", @@ -45818,7 +46328,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1292", + "source_location": "L1323", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_get_role_data_scope", @@ -45828,7 +46338,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1267", + "source_location": "L1244", + "weight": 1.0, + "source": "app_api_admin", + "target": "app_api_admin_get_role_management", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/api/admin.py", + "source_location": "L1298", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_get_role_menus", @@ -45848,7 +46368,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L324", + "source_location": "L338", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_get_user_by_id", @@ -45858,7 +46378,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L703", + "source_location": "L717", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_depts", @@ -45868,7 +46388,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L558", + "source_location": "L572", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_dict_data", @@ -45878,7 +46398,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L456", + "source_location": "L470", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_dict_types", @@ -45888,7 +46408,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1448", + "source_location": "L1479", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_menu_favorites", @@ -45898,7 +46418,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1074", + "source_location": "L1088", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_menus", @@ -45908,7 +46428,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1003", + "source_location": "L1017", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_post_bound_users", @@ -45918,7 +46438,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L923", + "source_location": "L937", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_posts", @@ -45928,7 +46448,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1193", + "source_location": "L1207", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_role_management", @@ -45958,7 +46478,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L814", + "source_location": "L828", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_list_sites", @@ -45998,7 +46518,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1041", + "source_location": "L1055", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_menucreatebody", @@ -46008,7 +46528,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1057", + "source_location": "L1071", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_menuupdatebody", @@ -46018,7 +46538,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L902", + "source_location": "L916", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_postcreatebody", @@ -46028,7 +46548,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L912", + "source_location": "L926", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_postupdatebody", @@ -46038,7 +46558,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L996", + "source_location": "L1010", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_postusersupdatebody", @@ -46048,7 +46568,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1487", + "source_location": "L1518", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_reorder_menu_favorites", @@ -46058,7 +46578,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L420", + "source_location": "L434", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_reset_user_password", @@ -46068,7 +46588,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1161", + "source_location": "L1175", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_rolecreatebody", @@ -46078,7 +46598,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1185", + "source_location": "L1199", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_roledatascopebody", @@ -46088,7 +46608,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1181", + "source_location": "L1195", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_rolemenubody", @@ -46098,7 +46618,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1171", + "source_location": "L1185", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_roleupdatebody", @@ -46108,7 +46628,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L783", + "source_location": "L797", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_sitecreatebody", @@ -46118,7 +46638,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L798", + "source_location": "L812", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_siteupdatebody", @@ -46148,7 +46668,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L740", + "source_location": "L754", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_dept", @@ -46158,7 +46678,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L599", + "source_location": "L613", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_dict_data", @@ -46168,7 +46688,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L494", + "source_location": "L508", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_dict_type", @@ -46178,7 +46698,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1114", + "source_location": "L1128", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_menu", @@ -46188,7 +46708,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L960", + "source_location": "L974", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_post", @@ -46198,7 +46718,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1017", + "source_location": "L1031", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_post_bound_users", @@ -46208,7 +46728,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1305", + "source_location": "L1336", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_role_data_scope", @@ -46218,7 +46738,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1230", + "source_location": "L1261", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_role_management", @@ -46228,7 +46748,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1277", + "source_location": "L1308", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_role_menus", @@ -46238,7 +46758,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L856", + "source_location": "L870", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_site", @@ -46258,7 +46778,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L377", + "source_location": "L391", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_update_user", @@ -46268,7 +46788,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1341", + "source_location": "L1372", "weight": 1.0, "source": "app_api_admin", "target": "app_api_admin_upload_attachment", @@ -46508,7 +47028,7 @@ "context": "submodule_import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1456", + "source_location": "L1487", "weight": 1.0, "source": "app_api_admin", "target": "app_crud_menu_favorite", @@ -46635,6 +47155,17 @@ "target": "app_models_models_sysuser", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 1.0, + "source": "app_api_admin", + "target": "app_models_models_sysuserrole", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -46760,7 +47291,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1398", + "source_location": "L1429", "weight": 1.0, "source": "app_api_admin_attachment_download_url", "target": "app_api_admin_py_session", @@ -46771,7 +47302,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1424", + "source_location": "L1455", "weight": 1.0, "source": "app_api_admin_attachment_preview_url", "target": "app_api_admin_py_session", @@ -46782,7 +47313,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L714", + "source_location": "L728", "weight": 1.0, "source": "app_api_admin_create_dept", "target": "app_api_admin_py_session", @@ -46793,7 +47324,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L575", + "source_location": "L589", "weight": 1.0, "source": "app_api_admin_create_dict_data", "target": "app_api_admin_py_session", @@ -46804,7 +47335,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L472", + "source_location": "L486", "weight": 1.0, "source": "app_api_admin_create_dict_type", "target": "app_api_admin_py_session", @@ -46815,7 +47346,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1085", + "source_location": "L1099", "weight": 1.0, "source": "app_api_admin_create_menu", "target": "app_api_admin_py_session", @@ -46826,7 +47357,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1462", + "source_location": "L1493", "weight": 1.0, "source": "app_api_admin_create_menu_favorite", "target": "app_api_admin_py_session", @@ -46837,7 +47368,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L937", + "source_location": "L951", "weight": 1.0, "source": "app_api_admin_create_post", "target": "app_api_admin_py_session", @@ -46848,7 +47379,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1207", + "source_location": "L1221", "weight": 1.0, "source": "app_api_admin_create_role_management", "target": "app_api_admin_py_session", @@ -46859,7 +47390,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L828", + "source_location": "L842", "weight": 1.0, "source": "app_api_admin_create_site", "target": "app_api_admin_py_session", @@ -46881,7 +47412,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L344", + "source_location": "L358", "weight": 1.0, "source": "app_api_admin_create_user", "target": "app_api_admin_py_session", @@ -46892,7 +47423,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L766", + "source_location": "L780", "weight": 1.0, "source": "app_api_admin_delete_dept", "target": "app_api_admin_py_session", @@ -46903,7 +47434,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L623", + "source_location": "L637", "weight": 1.0, "source": "app_api_admin_delete_dict_data", "target": "app_api_admin_py_session", @@ -46914,7 +47445,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L519", + "source_location": "L533", "weight": 1.0, "source": "app_api_admin_delete_dict_type", "target": "app_api_admin_py_session", @@ -46925,7 +47456,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1144", + "source_location": "L1158", "weight": 1.0, "source": "app_api_admin_delete_menu", "target": "app_api_admin_py_session", @@ -46936,7 +47467,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1508", + "source_location": "L1539", "weight": 1.0, "source": "app_api_admin_delete_menu_favorite", "target": "app_api_admin_py_session", @@ -46947,7 +47478,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L984", + "source_location": "L998", "weight": 1.0, "source": "app_api_admin_delete_post", "target": "app_api_admin_py_session", @@ -46958,7 +47489,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1254", + "source_location": "L1285", "weight": 1.0, "source": "app_api_admin_delete_role_management", "target": "app_api_admin_py_session", @@ -46969,7 +47500,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L885", + "source_location": "L899", "weight": 1.0, "source": "app_api_admin_delete_site", "target": "app_api_admin_py_session", @@ -46991,7 +47522,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L407", + "source_location": "L421", "weight": 1.0, "source": "app_api_admin_delete_user", "target": "app_api_admin_py_session", @@ -47002,7 +47533,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L650", + "source_location": "L664", "weight": 1.0, "source": "app_api_admin_dict_data_all", "target": "app_api_admin_py_session", @@ -47013,7 +47544,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L636", + "source_location": "L650", "weight": 1.0, "source": "app_api_admin_dict_data_options", "target": "app_api_admin_py_session", @@ -47024,7 +47555,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1292", + "source_location": "L1323", "weight": 1.0, "source": "app_api_admin_get_role_data_scope", "target": "app_api_admin_py_session", @@ -47035,7 +47566,18 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1267", + "source_location": "L1244", + "weight": 1.0, + "source": "app_api_admin_get_role_management", + "target": "app_api_admin_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/admin.py", + "source_location": "L1298", "weight": 1.0, "source": "app_api_admin_get_role_menus", "target": "app_api_admin_py_session", @@ -47057,7 +47599,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L324", + "source_location": "L338", "weight": 1.0, "source": "app_api_admin_get_user_by_id", "target": "app_api_admin_py_session", @@ -47068,7 +47610,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L703", + "source_location": "L717", "weight": 1.0, "source": "app_api_admin_list_depts", "target": "app_api_admin_py_session", @@ -47079,7 +47621,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L558", + "source_location": "L572", "weight": 1.0, "source": "app_api_admin_list_dict_data", "target": "app_api_admin_py_session", @@ -47090,7 +47632,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L456", + "source_location": "L470", "weight": 1.0, "source": "app_api_admin_list_dict_types", "target": "app_api_admin_py_session", @@ -47101,7 +47643,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1448", + "source_location": "L1479", "weight": 1.0, "source": "app_api_admin_list_menu_favorites", "target": "app_api_admin_py_session", @@ -47112,7 +47654,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1074", + "source_location": "L1088", "weight": 1.0, "source": "app_api_admin_list_menus", "target": "app_api_admin_py_session", @@ -47123,7 +47665,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1003", + "source_location": "L1017", "weight": 1.0, "source": "app_api_admin_list_post_bound_users", "target": "app_api_admin_py_session", @@ -47134,7 +47676,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L923", + "source_location": "L937", "weight": 1.0, "source": "app_api_admin_list_posts", "target": "app_api_admin_py_session", @@ -47145,7 +47687,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1193", + "source_location": "L1207", "weight": 1.0, "source": "app_api_admin_list_role_management", "target": "app_api_admin_py_session", @@ -47167,7 +47709,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L814", + "source_location": "L828", "weight": 1.0, "source": "app_api_admin_list_sites", "target": "app_api_admin_py_session", @@ -47211,7 +47753,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1487", + "source_location": "L1518", "weight": 1.0, "source": "app_api_admin_reorder_menu_favorites", "target": "app_api_admin_py_session", @@ -47222,7 +47764,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L420", + "source_location": "L434", "weight": 1.0, "source": "app_api_admin_reset_user_password", "target": "app_api_admin_py_session", @@ -47233,7 +47775,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L740", + "source_location": "L754", "weight": 1.0, "source": "app_api_admin_update_dept", "target": "app_api_admin_py_session", @@ -47244,7 +47786,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L599", + "source_location": "L613", "weight": 1.0, "source": "app_api_admin_update_dict_data", "target": "app_api_admin_py_session", @@ -47255,7 +47797,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L494", + "source_location": "L508", "weight": 1.0, "source": "app_api_admin_update_dict_type", "target": "app_api_admin_py_session", @@ -47266,7 +47808,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1114", + "source_location": "L1128", "weight": 1.0, "source": "app_api_admin_update_menu", "target": "app_api_admin_py_session", @@ -47277,7 +47819,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L960", + "source_location": "L974", "weight": 1.0, "source": "app_api_admin_update_post", "target": "app_api_admin_py_session", @@ -47288,7 +47830,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1017", + "source_location": "L1031", "weight": 1.0, "source": "app_api_admin_update_post_bound_users", "target": "app_api_admin_py_session", @@ -47299,7 +47841,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1305", + "source_location": "L1336", "weight": 1.0, "source": "app_api_admin_update_role_data_scope", "target": "app_api_admin_py_session", @@ -47310,7 +47852,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1230", + "source_location": "L1261", "weight": 1.0, "source": "app_api_admin_update_role_management", "target": "app_api_admin_py_session", @@ -47321,7 +47863,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1277", + "source_location": "L1308", "weight": 1.0, "source": "app_api_admin_update_role_menus", "target": "app_api_admin_py_session", @@ -47332,7 +47874,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L856", + "source_location": "L870", "weight": 1.0, "source": "app_api_admin_update_site", "target": "app_api_admin_py_session", @@ -47354,7 +47896,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L377", + "source_location": "L391", "weight": 1.0, "source": "app_api_admin_update_user", "target": "app_api_admin_py_session", @@ -47365,7 +47907,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1341", + "source_location": "L1372", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_api_admin_py_session", @@ -47496,6 +48038,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_tenantcreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -47576,6 +48128,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_tenantupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -47699,7 +48261,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1407", + "source_location": "L1438", "weight": 1.0, "source": "app_api_admin_attachment_download_url", "target": "app_api_admin_get_tenant_no", @@ -47710,7 +48272,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1433", + "source_location": "L1464", "weight": 1.0, "source": "app_api_admin_attachment_preview_url", "target": "app_api_admin_get_tenant_no", @@ -47721,7 +48283,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L720", + "source_location": "L734", "weight": 1.0, "source": "app_api_admin_create_dept", "target": "app_api_admin_get_tenant_no", @@ -47732,7 +48294,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L581", + "source_location": "L595", "weight": 1.0, "source": "app_api_admin_create_dict_data", "target": "app_api_admin_get_tenant_no", @@ -47743,7 +48305,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L478", + "source_location": "L492", "weight": 1.0, "source": "app_api_admin_create_dict_type", "target": "app_api_admin_get_tenant_no", @@ -47754,7 +48316,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1091", + "source_location": "L1105", "weight": 1.0, "source": "app_api_admin_create_menu", "target": "app_api_admin_get_tenant_no", @@ -47765,7 +48327,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1472", + "source_location": "L1503", "weight": 1.0, "source": "app_api_admin_create_menu_favorite", "target": "app_api_admin_get_tenant_no", @@ -47776,7 +48338,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L943", + "source_location": "L957", "weight": 1.0, "source": "app_api_admin_create_post", "target": "app_api_admin_get_tenant_no", @@ -47787,7 +48349,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1213", + "source_location": "L1227", "weight": 1.0, "source": "app_api_admin_create_role_management", "target": "app_api_admin_get_tenant_no", @@ -47798,7 +48360,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L834", + "source_location": "L848", "weight": 1.0, "source": "app_api_admin_create_site", "target": "app_api_admin_get_tenant_no", @@ -47809,7 +48371,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L350", + "source_location": "L364", "weight": 1.0, "source": "app_api_admin_create_user", "target": "app_api_admin_get_tenant_no", @@ -47820,7 +48382,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1518", + "source_location": "L1549", "weight": 1.0, "source": "app_api_admin_delete_menu_favorite", "target": "app_api_admin_get_tenant_no", @@ -47831,7 +48393,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L654", + "source_location": "L668", "weight": 1.0, "source": "app_api_admin_dict_data_all", "target": "app_api_admin_get_tenant_no", @@ -47842,7 +48404,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L641", + "source_location": "L655", "weight": 1.0, "source": "app_api_admin_dict_data_options", "target": "app_api_admin_get_tenant_no", @@ -47853,7 +48415,18 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L329", + "source_location": "L1249", + "weight": 1.0, + "source": "app_api_admin_get_role_management", + "target": "app_api_admin_get_tenant_no", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/api/admin.py", + "source_location": "L343", "weight": 1.0, "source": "app_api_admin_get_user_by_id", "target": "app_api_admin_get_tenant_no", @@ -47864,7 +48437,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L708", + "source_location": "L722", "weight": 1.0, "source": "app_api_admin_list_depts", "target": "app_api_admin_get_tenant_no", @@ -47875,7 +48448,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L566", + "source_location": "L580", "weight": 1.0, "source": "app_api_admin_list_dict_data", "target": "app_api_admin_get_tenant_no", @@ -47886,7 +48459,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L463", + "source_location": "L477", "weight": 1.0, "source": "app_api_admin_list_dict_types", "target": "app_api_admin_get_tenant_no", @@ -47897,7 +48470,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1455", + "source_location": "L1486", "weight": 1.0, "source": "app_api_admin_list_menu_favorites", "target": "app_api_admin_get_tenant_no", @@ -47908,7 +48481,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1079", + "source_location": "L1093", "weight": 1.0, "source": "app_api_admin_list_menus", "target": "app_api_admin_get_tenant_no", @@ -47919,7 +48492,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1008", + "source_location": "L1022", "weight": 1.0, "source": "app_api_admin_list_post_bound_users", "target": "app_api_admin_get_tenant_no", @@ -47930,7 +48503,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L930", + "source_location": "L944", "weight": 1.0, "source": "app_api_admin_list_posts", "target": "app_api_admin_get_tenant_no", @@ -47941,7 +48514,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1200", + "source_location": "L1214", "weight": 1.0, "source": "app_api_admin_list_role_management", "target": "app_api_admin_get_tenant_no", @@ -47952,7 +48525,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L821", + "source_location": "L835", "weight": 1.0, "source": "app_api_admin_list_sites", "target": "app_api_admin_get_tenant_no", @@ -47974,7 +48547,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1497", + "source_location": "L1528", "weight": 1.0, "source": "app_api_admin_reorder_menu_favorites", "target": "app_api_admin_get_tenant_no", @@ -47985,7 +48558,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L501", + "source_location": "L515", "weight": 1.0, "source": "app_api_admin_update_dict_type", "target": "app_api_admin_get_tenant_no", @@ -47996,7 +48569,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1023", + "source_location": "L1037", "weight": 1.0, "source": "app_api_admin_update_post_bound_users", "target": "app_api_admin_get_tenant_no", @@ -48007,7 +48580,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1312", + "source_location": "L1343", "weight": 1.0, "source": "app_api_admin_update_role_data_scope", "target": "app_api_admin_get_tenant_no", @@ -48018,7 +48591,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1284", + "source_location": "L1315", "weight": 1.0, "source": "app_api_admin_update_role_menus", "target": "app_api_admin_get_tenant_no", @@ -48029,7 +48602,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1364", + "source_location": "L1395", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_api_admin_get_tenant_no", @@ -48040,7 +48613,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L344", + "source_location": "L358", "weight": 1.0, "source": "app_api_admin_create_user", "target": "app_api_admin_usercreatebody", @@ -48096,6 +48669,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_usercreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48131,7 +48714,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L377", + "source_location": "L391", "weight": 1.0, "source": "app_api_admin_update_user", "target": "app_api_admin_userupdatebody", @@ -48187,6 +48770,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_userupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48234,7 +48827,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L320", + "source_location": "L334", "weight": 1.0, "source": "app_api_admin_list_users", "target": "app_core_response_success_response" @@ -48245,7 +48838,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L336", + "source_location": "L350", "weight": 1.0, "source": "app_api_admin_get_user_by_id", "target": "app_core_data_scope_assert_row_in_data_scope" @@ -48256,7 +48849,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L332", + "source_location": "L346", "weight": 1.0, "source": "app_api_admin_get_user_by_id", "target": "app_core_response_error_response" @@ -48267,7 +48860,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L340", + "source_location": "L354", "weight": 1.0, "source": "app_api_admin_get_user_by_id", "target": "app_core_response_success_response" @@ -48278,7 +48871,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L352", + "source_location": "L366", "weight": 1.0, "source": "app_api_admin_create_user", "target": "app_core_response_error_response" @@ -48289,7 +48882,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L371", + "source_location": "L385", "weight": 1.0, "source": "app_api_admin_create_user", "target": "app_core_response_success_response" @@ -48300,7 +48893,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L403", + "source_location": "L417", "weight": 1.0, "source": "app_api_admin_update_user", "target": "app_core_response_error_response" @@ -48311,7 +48904,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L401", + "source_location": "L415", "weight": 1.0, "source": "app_api_admin_update_user", "target": "app_core_response_success_response" @@ -48322,7 +48915,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L416", + "source_location": "L430", "weight": 1.0, "source": "app_api_admin_delete_user", "target": "app_core_response_error_response" @@ -48333,7 +48926,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L414", + "source_location": "L428", "weight": 1.0, "source": "app_api_admin_delete_user", "target": "app_core_response_success_response" @@ -48344,7 +48937,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L429", + "source_location": "L443", "weight": 1.0, "source": "app_api_admin_reset_user_password", "target": "app_core_response_error_response" @@ -48355,7 +48948,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L427", + "source_location": "L441", "weight": 1.0, "source": "app_api_admin_reset_user_password", "target": "app_core_response_success_response" @@ -48365,7 +48958,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L472", + "source_location": "L486", "weight": 1.0, "source": "app_api_admin_create_dict_type", "target": "app_api_admin_dicttypecreatebody", @@ -48375,7 +48968,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L437", + "source_location": "L451", "weight": 1.0, "source": "app_api_admin_dicttypecreatebody", "target": "app_models_base_basemodel", @@ -48421,6 +49014,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_dicttypecreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48455,7 +49058,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L446", + "source_location": "L460", "weight": 1.0, "source": "app_api_admin_dicttypeupdatebody", "target": "app_models_base_basemodel", @@ -48501,6 +49104,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_dicttypeupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48536,7 +49149,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L494", + "source_location": "L508", "weight": 1.0, "source": "app_api_admin_update_dict_type", "target": "app_api_admin_dicttypeupdatebody", @@ -48548,7 +49161,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L468", + "source_location": "L482", "weight": 1.0, "source": "app_api_admin_list_dict_types", "target": "app_core_response_success_response" @@ -48559,7 +49172,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L490", + "source_location": "L504", "weight": 1.0, "source": "app_api_admin_create_dict_type", "target": "app_core_response_error_response" @@ -48570,7 +49183,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L488", + "source_location": "L502", "weight": 1.0, "source": "app_api_admin_create_dict_type", "target": "app_core_response_success_response" @@ -48581,7 +49194,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L515", + "source_location": "L529", "weight": 1.0, "source": "app_api_admin_update_dict_type", "target": "app_core_response_error_response" @@ -48592,7 +49205,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L513", + "source_location": "L527", "weight": 1.0, "source": "app_api_admin_update_dict_type", "target": "app_core_response_success_response" @@ -48603,7 +49216,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L528", + "source_location": "L542", "weight": 1.0, "source": "app_api_admin_delete_dict_type", "target": "app_core_response_error_response" @@ -48614,7 +49227,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L526", + "source_location": "L540", "weight": 1.0, "source": "app_api_admin_delete_dict_type", "target": "app_core_response_success_response" @@ -48624,7 +49237,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L575", + "source_location": "L589", "weight": 1.0, "source": "app_api_admin_create_dict_data", "target": "app_api_admin_dictdatacreatebody", @@ -48634,7 +49247,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L536", + "source_location": "L550", "weight": 1.0, "source": "app_api_admin_dictdatacreatebody", "target": "app_models_base_basemodel", @@ -48680,6 +49293,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_dictdatacreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48714,7 +49337,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L547", + "source_location": "L561", "weight": 1.0, "source": "app_api_admin_dictdataupdatebody", "target": "app_models_base_basemodel", @@ -48760,6 +49383,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_dictdataupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48795,7 +49428,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L599", + "source_location": "L613", "weight": 1.0, "source": "app_api_admin_update_dict_data", "target": "app_api_admin_dictdataupdatebody", @@ -48807,7 +49440,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L571", + "source_location": "L585", "weight": 1.0, "source": "app_api_admin_list_dict_data", "target": "app_core_response_success_response" @@ -48818,7 +49451,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L595", + "source_location": "L609", "weight": 1.0, "source": "app_api_admin_create_dict_data", "target": "app_core_response_error_response" @@ -48829,7 +49462,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L593", + "source_location": "L607", "weight": 1.0, "source": "app_api_admin_create_dict_data", "target": "app_core_response_success_response" @@ -48840,7 +49473,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L619", + "source_location": "L633", "weight": 1.0, "source": "app_api_admin_update_dict_data", "target": "app_core_response_error_response" @@ -48851,33 +49484,11 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L617", + "source_location": "L631", "weight": 1.0, "source": "app_api_admin_update_dict_data", "target": "app_core_response_success_response" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/admin.py", - "source_location": "L632", - "weight": 1.0, - "source": "app_api_admin_delete_dict_data", - "target": "app_core_response_error_response" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/admin.py", - "source_location": "L630", - "weight": 1.0, - "source": "app_api_admin_delete_dict_data", - "target": "app_core_response_success_response" - }, { "relation": "calls", "context": "call", @@ -48886,6 +49497,28 @@ "source_file": "app/api/admin.py", "source_location": "L646", "weight": 1.0, + "source": "app_api_admin_delete_dict_data", + "target": "app_core_response_error_response" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/admin.py", + "source_location": "L644", + "weight": 1.0, + "source": "app_api_admin_delete_dict_data", + "target": "app_core_response_success_response" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/admin.py", + "source_location": "L660", + "weight": 1.0, "source": "app_api_admin_dict_data_options", "target": "app_core_response_success_response" }, @@ -48895,7 +49528,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L669", + "source_location": "L683", "weight": 1.0, "source": "app_api_admin_dict_data_all", "target": "app_core_response_success_response" @@ -48905,7 +49538,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L714", + "source_location": "L728", "weight": 1.0, "source": "app_api_admin_create_dept", "target": "app_api_admin_deptcreatebody", @@ -48915,7 +49548,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L677", + "source_location": "L691", "weight": 1.0, "source": "app_api_admin_deptcreatebody", "target": "app_models_base_basemodel", @@ -48961,6 +49594,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_deptcreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -48995,7 +49638,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L690", + "source_location": "L704", "weight": 1.0, "source": "app_api_admin_deptupdatebody", "target": "app_models_base_basemodel", @@ -49041,6 +49684,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_deptupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49076,7 +49729,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L740", + "source_location": "L754", "weight": 1.0, "source": "app_api_admin_update_dept", "target": "app_api_admin_deptupdatebody", @@ -49088,7 +49741,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L710", + "source_location": "L724", "weight": 1.0, "source": "app_api_admin_list_depts", "target": "app_core_response_success_response" @@ -49099,7 +49752,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L736", + "source_location": "L750", "weight": 1.0, "source": "app_api_admin_create_dept", "target": "app_core_response_error_response" @@ -49110,7 +49763,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L734", + "source_location": "L748", "weight": 1.0, "source": "app_api_admin_create_dept", "target": "app_core_response_success_response" @@ -49121,7 +49774,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L762", + "source_location": "L776", "weight": 1.0, "source": "app_api_admin_update_dept", "target": "app_core_response_error_response" @@ -49132,7 +49785,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L760", + "source_location": "L774", "weight": 1.0, "source": "app_api_admin_update_dept", "target": "app_core_response_success_response" @@ -49143,7 +49796,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L775", + "source_location": "L789", "weight": 1.0, "source": "app_api_admin_delete_dept", "target": "app_core_response_error_response" @@ -49154,7 +49807,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L773", + "source_location": "L787", "weight": 1.0, "source": "app_api_admin_delete_dept", "target": "app_core_response_success_response" @@ -49164,7 +49817,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L828", + "source_location": "L842", "weight": 1.0, "source": "app_api_admin_create_site", "target": "app_api_admin_sitecreatebody", @@ -49174,7 +49827,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L783", + "source_location": "L797", "weight": 1.0, "source": "app_api_admin_sitecreatebody", "target": "app_models_base_basemodel", @@ -49220,6 +49873,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_sitecreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49254,7 +49917,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L798", + "source_location": "L812", "weight": 1.0, "source": "app_api_admin_siteupdatebody", "target": "app_models_base_basemodel", @@ -49300,6 +49963,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_siteupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49335,7 +50008,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L856", + "source_location": "L870", "weight": 1.0, "source": "app_api_admin_update_site", "target": "app_api_admin_siteupdatebody", @@ -49347,7 +50020,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L824", + "source_location": "L838", "weight": 1.0, "source": "app_api_admin_list_sites", "target": "app_core_response_success_response" @@ -49358,7 +50031,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L852", + "source_location": "L866", "weight": 1.0, "source": "app_api_admin_create_site", "target": "app_core_response_error_response" @@ -49369,7 +50042,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L850", + "source_location": "L864", "weight": 1.0, "source": "app_api_admin_create_site", "target": "app_core_response_success_response" @@ -49380,7 +50053,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L881", + "source_location": "L895", "weight": 1.0, "source": "app_api_admin_update_site", "target": "app_core_response_error_response" @@ -49391,7 +50064,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L879", + "source_location": "L893", "weight": 1.0, "source": "app_api_admin_update_site", "target": "app_core_response_success_response" @@ -49402,7 +50075,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L894", + "source_location": "L908", "weight": 1.0, "source": "app_api_admin_delete_site", "target": "app_core_response_error_response" @@ -49413,7 +50086,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L892", + "source_location": "L906", "weight": 1.0, "source": "app_api_admin_delete_site", "target": "app_core_response_success_response" @@ -49423,7 +50096,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L937", + "source_location": "L951", "weight": 1.0, "source": "app_api_admin_create_post", "target": "app_api_admin_postcreatebody", @@ -49433,7 +50106,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L902", + "source_location": "L916", "weight": 1.0, "source": "app_api_admin_postcreatebody", "target": "app_models_base_basemodel", @@ -49479,6 +50152,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_postcreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49513,7 +50196,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L912", + "source_location": "L926", "weight": 1.0, "source": "app_api_admin_postupdatebody", "target": "app_models_base_basemodel", @@ -49559,6 +50242,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_postupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49594,7 +50287,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L960", + "source_location": "L974", "weight": 1.0, "source": "app_api_admin_update_post", "target": "app_api_admin_postupdatebody", @@ -49606,7 +50299,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L933", + "source_location": "L947", "weight": 1.0, "source": "app_api_admin_list_posts", "target": "app_core_response_success_response" @@ -49617,7 +50310,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L956", + "source_location": "L970", "weight": 1.0, "source": "app_api_admin_create_post", "target": "app_core_response_error_response" @@ -49628,7 +50321,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L954", + "source_location": "L968", "weight": 1.0, "source": "app_api_admin_create_post", "target": "app_core_response_success_response" @@ -49639,7 +50332,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L980", + "source_location": "L994", "weight": 1.0, "source": "app_api_admin_update_post", "target": "app_core_response_error_response" @@ -49650,7 +50343,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L978", + "source_location": "L992", "weight": 1.0, "source": "app_api_admin_update_post", "target": "app_core_response_success_response" @@ -49661,7 +50354,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L993", + "source_location": "L1007", "weight": 1.0, "source": "app_api_admin_delete_post", "target": "app_core_response_error_response" @@ -49672,7 +50365,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L991", + "source_location": "L1005", "weight": 1.0, "source": "app_api_admin_delete_post", "target": "app_core_response_success_response" @@ -49681,7 +50374,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L996", + "source_location": "L1010", "weight": 1.0, "source": "app_api_admin_postusersupdatebody", "target": "app_models_base_basemodel", @@ -49727,6 +50420,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_postusersupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49762,7 +50465,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1017", + "source_location": "L1031", "weight": 1.0, "source": "app_api_admin_update_post_bound_users", "target": "app_api_admin_postusersupdatebody", @@ -49774,7 +50477,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1011", + "source_location": "L1025", "weight": 1.0, "source": "app_api_admin_list_post_bound_users", "target": "app_core_response_error_response" @@ -49785,7 +50488,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1013", + "source_location": "L1027", "weight": 1.0, "source": "app_api_admin_list_post_bound_users", "target": "app_core_response_success_response" @@ -49796,7 +50499,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1026", + "source_location": "L1040", "weight": 1.0, "source": "app_api_admin_update_post_bound_users", "target": "app_core_response_error_response" @@ -49807,7 +50510,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1031", + "source_location": "L1045", "weight": 1.0, "source": "app_api_admin_update_post_bound_users", "target": "app_core_response_success_response" @@ -49817,7 +50520,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1085", + "source_location": "L1099", "weight": 1.0, "source": "app_api_admin_create_menu", "target": "app_api_admin_menucreatebody", @@ -49827,7 +50530,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1041", + "source_location": "L1055", "weight": 1.0, "source": "app_api_admin_menucreatebody", "target": "app_models_base_basemodel", @@ -49873,6 +50576,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_menucreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49907,7 +50620,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1057", + "source_location": "L1071", "weight": 1.0, "source": "app_api_admin_menuupdatebody", "target": "app_models_base_basemodel", @@ -49953,6 +50666,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_menuupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -49988,7 +50711,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1114", + "source_location": "L1128", "weight": 1.0, "source": "app_api_admin_update_menu", "target": "app_api_admin_menuupdatebody", @@ -50000,7 +50723,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1081", + "source_location": "L1095", "weight": 1.0, "source": "app_api_admin_list_menus", "target": "app_core_response_success_response" @@ -50011,7 +50734,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1110", + "source_location": "L1124", "weight": 1.0, "source": "app_api_admin_create_menu", "target": "app_core_response_error_response" @@ -50022,7 +50745,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1108", + "source_location": "L1122", "weight": 1.0, "source": "app_api_admin_create_menu", "target": "app_core_response_success_response" @@ -50033,7 +50756,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1140", + "source_location": "L1154", "weight": 1.0, "source": "app_api_admin_update_menu", "target": "app_core_response_error_response" @@ -50044,7 +50767,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1138", + "source_location": "L1152", "weight": 1.0, "source": "app_api_admin_update_menu", "target": "app_core_response_success_response" @@ -50055,7 +50778,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1153", + "source_location": "L1167", "weight": 1.0, "source": "app_api_admin_delete_menu", "target": "app_core_response_error_response" @@ -50066,7 +50789,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1151", + "source_location": "L1165", "weight": 1.0, "source": "app_api_admin_delete_menu", "target": "app_core_response_success_response" @@ -50076,7 +50799,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1207", + "source_location": "L1221", "weight": 1.0, "source": "app_api_admin_create_role_management", "target": "app_api_admin_rolecreatebody", @@ -50086,7 +50809,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1161", + "source_location": "L1175", "weight": 1.0, "source": "app_api_admin_rolecreatebody", "target": "app_models_base_basemodel", @@ -50132,6 +50855,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_rolecreatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -50166,7 +50899,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1171", + "source_location": "L1185", "weight": 1.0, "source": "app_api_admin_roleupdatebody", "target": "app_models_base_basemodel", @@ -50212,6 +50945,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_roleupdatebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -50247,7 +50990,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1230", + "source_location": "L1261", "weight": 1.0, "source": "app_api_admin_update_role_management", "target": "app_api_admin_roleupdatebody", @@ -50257,7 +51000,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1181", + "source_location": "L1195", "weight": 1.0, "source": "app_api_admin_rolemenubody", "target": "app_models_base_basemodel", @@ -50303,6 +51046,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_rolemenubody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -50338,7 +51091,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1277", + "source_location": "L1308", "weight": 1.0, "source": "app_api_admin_update_role_menus", "target": "app_api_admin_rolemenubody", @@ -50348,7 +51101,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1185", + "source_location": "L1199", "weight": 1.0, "source": "app_api_admin_roledatascopebody", "target": "app_models_base_basemodel", @@ -50394,6 +51147,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_roledatascopebody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -50429,7 +51192,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1305", + "source_location": "L1336", "weight": 1.0, "source": "app_api_admin_update_role_data_scope", "target": "app_api_admin_roledatascopebody", @@ -50441,7 +51204,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1203", + "source_location": "L1217", "weight": 1.0, "source": "app_api_admin_list_role_management", "target": "app_core_response_success_response" @@ -50452,7 +51215,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1226", + "source_location": "L1240", "weight": 1.0, "source": "app_api_admin_create_role_management", "target": "app_core_response_error_response" @@ -50463,7 +51226,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1224", + "source_location": "L1238", "weight": 1.0, "source": "app_api_admin_create_role_management", "target": "app_core_response_success_response" @@ -50474,7 +51237,40 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1250", + "source_location": "L1254", + "weight": 1.0, + "source": "app_api_admin_get_role_management", + "target": "app_core_data_scope_assert_row_in_data_scope" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/admin.py", + "source_location": "L1252", + "weight": 1.0, + "source": "app_api_admin_get_role_management", + "target": "app_core_response_error_response" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/admin.py", + "source_location": "L1257", + "weight": 1.0, + "source": "app_api_admin_get_role_management", + "target": "app_core_response_success_response" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/admin.py", + "source_location": "L1281", "weight": 1.0, "source": "app_api_admin_update_role_management", "target": "app_core_response_error_response" @@ -50485,7 +51281,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1248", + "source_location": "L1279", "weight": 1.0, "source": "app_api_admin_update_role_management", "target": "app_core_response_success_response" @@ -50496,7 +51292,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1263", + "source_location": "L1294", "weight": 1.0, "source": "app_api_admin_delete_role_management", "target": "app_core_response_error_response" @@ -50507,7 +51303,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1261", + "source_location": "L1292", "weight": 1.0, "source": "app_api_admin_delete_role_management", "target": "app_core_response_success_response" @@ -50518,7 +51314,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1273", + "source_location": "L1304", "weight": 1.0, "source": "app_api_admin_get_role_menus", "target": "app_core_response_success_response" @@ -50529,7 +51325,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1288", + "source_location": "L1319", "weight": 1.0, "source": "app_api_admin_update_role_menus", "target": "app_core_response_error_response" @@ -50540,7 +51336,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1286", + "source_location": "L1317", "weight": 1.0, "source": "app_api_admin_update_role_menus", "target": "app_core_response_success_response" @@ -50551,7 +51347,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1299", + "source_location": "L1330", "weight": 1.0, "source": "app_api_admin_get_role_data_scope", "target": "app_core_response_error_response" @@ -50562,7 +51358,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1301", + "source_location": "L1332", "weight": 1.0, "source": "app_api_admin_get_role_data_scope", "target": "app_core_response_success_response" @@ -50573,7 +51369,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1323", + "source_location": "L1354", "weight": 1.0, "source": "app_api_admin_update_role_data_scope", "target": "app_core_response_error_response" @@ -50584,7 +51380,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1321", + "source_location": "L1352", "weight": 1.0, "source": "app_api_admin_update_role_data_scope", "target": "app_core_response_success_response" @@ -50594,7 +51390,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1382", + "source_location": "L1413", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_api_admin_format_file_size", @@ -50605,7 +51401,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1341", + "source_location": "L1372", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_api_admin_py_uploadfile", @@ -50617,7 +51413,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1351", + "source_location": "L1382", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_core_attachment_biz_resolve_upload_folder" @@ -50628,7 +51424,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1349", + "source_location": "L1380", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_core_response_error_response" @@ -50639,7 +51435,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1377", + "source_location": "L1408", "weight": 1.0, "source": "app_api_admin_upload_attachment", "target": "app_core_response_success_response" @@ -50649,7 +51445,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1398", + "source_location": "L1429", "weight": 1.0, "source": "app_api_admin_attachment_download_url", "target": "app_api_admin_attachmentdownloadurlbody", @@ -50660,7 +51456,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1424", + "source_location": "L1455", "weight": 1.0, "source": "app_api_admin_attachment_preview_url", "target": "app_api_admin_attachmentdownloadurlbody", @@ -50670,7 +51466,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1391", + "source_location": "L1422", "weight": 1.0, "source": "app_api_admin_attachmentdownloadurlbody", "target": "app_models_base_basemodel", @@ -50716,6 +51512,16 @@ "target": "app_models_models_sysuser", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/api/admin.py", + "source_location": "L30", + "weight": 0.8, + "source": "app_api_admin_attachmentdownloadurlbody", + "target": "app_models_models_sysuserrole", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -50752,7 +51558,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1406", + "source_location": "L1437", "weight": 1.0, "source": "app_api_admin_attachment_download_url", "target": "app_core_response_error_response" @@ -50763,7 +51569,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1418", + "source_location": "L1449", "weight": 1.0, "source": "app_api_admin_attachment_download_url", "target": "app_core_response_success_response" @@ -50772,9 +51578,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1403", + "source_location": "L1434", "weight": 1.0, - "source": "app_api_admin_rationale_1403", + "source": "app_api_admin_rationale_1434", "target": "app_api_admin_attachment_download_url", "confidence_score": 1.0 }, @@ -50784,7 +51590,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1432", + "source_location": "L1463", "weight": 1.0, "source": "app_api_admin_attachment_preview_url", "target": "app_core_response_error_response" @@ -50795,7 +51601,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1437", + "source_location": "L1468", "weight": 1.0, "source": "app_api_admin_attachment_preview_url", "target": "app_core_response_success_response" @@ -50804,9 +51610,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1429", + "source_location": "L1460", "weight": 1.0, - "source": "app_api_admin_rationale_1429", + "source": "app_api_admin_rationale_1460", "target": "app_api_admin_attachment_preview_url", "confidence_score": 1.0 }, @@ -50816,7 +51622,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1454", + "source_location": "L1485", "weight": 1.0, "source": "app_api_admin_list_menu_favorites", "target": "app_core_response_error_response" @@ -50827,7 +51633,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1458", + "source_location": "L1489", "weight": 1.0, "source": "app_api_admin_list_menu_favorites", "target": "app_core_response_success_response" @@ -50838,7 +51644,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1471", + "source_location": "L1502", "weight": 1.0, "source": "app_api_admin_create_menu_favorite", "target": "app_core_response_error_response" @@ -50849,7 +51655,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1481", + "source_location": "L1512", "weight": 1.0, "source": "app_api_admin_create_menu_favorite", "target": "app_core_response_success_response" @@ -50859,7 +51665,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1462", + "source_location": "L1493", "weight": 1.0, "source": "app_api_admin_create_menu_favorite", "target": "app_schemas_menu_favorite_menufavoritecreatebody", @@ -50871,7 +51677,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1496", + "source_location": "L1527", "weight": 1.0, "source": "app_api_admin_reorder_menu_favorites", "target": "app_core_response_error_response" @@ -50882,7 +51688,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1502", + "source_location": "L1533", "weight": 1.0, "source": "app_api_admin_reorder_menu_favorites", "target": "app_core_response_success_response" @@ -50892,7 +51698,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1487", + "source_location": "L1518", "weight": 1.0, "source": "app_api_admin_reorder_menu_favorites", "target": "app_schemas_menu_favorite_menufavoritereorderbody", @@ -50904,7 +51710,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1517", + "source_location": "L1548", "weight": 1.0, "source": "app_api_admin_delete_menu_favorite", "target": "app_core_response_error_response" @@ -50915,7 +51721,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/admin.py", - "source_location": "L1522", + "source_location": "L1553", "weight": 1.0, "source": "app_api_admin_delete_menu_favorite", "target": "app_core_response_success_response" @@ -50925,7 +51731,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", - "source_location": "L1508", + "source_location": "L1539", "weight": 1.0, "source": "app_api_admin_delete_menu_favorite", "target": "app_schemas_menu_favorite_menufavoritedeletebody", @@ -93826,7 +94632,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1427", + "source_location": "L1497", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_archive_plan", @@ -93836,7 +94642,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1165", + "source_location": "L1235", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_build_driver_url", @@ -93846,7 +94652,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1365", + "source_location": "L1435", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_cancel_plan", @@ -93856,7 +94662,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1338", + "source_location": "L1408", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_cancel_plan_wait_notice", @@ -93866,7 +94672,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L463", + "source_location": "L467", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_count_plans_by_contract", @@ -93876,7 +94682,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L735", + "source_location": "L805", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_create_from_contract", @@ -93886,7 +94692,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L517", + "source_location": "L587", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_create_plan", @@ -93896,7 +94702,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L601", + "source_location": "L671", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_create_plan_full", @@ -93906,7 +94712,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1689", + "source_location": "L1759", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_delete_plan", @@ -93916,7 +94722,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L223", + "source_location": "L227", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_determine_plan_type", @@ -93926,7 +94732,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1668", + "source_location": "L1738", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_ensure_subpack_slip_no", @@ -93936,7 +94742,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L154", + "source_location": "L158", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_format_subpack_slip_no", @@ -93946,7 +94752,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L237", + "source_location": "L241", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_generate_notify_message", @@ -93956,7 +94762,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L122", + "source_location": "L126", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_generate_plan_no", @@ -93966,7 +94772,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1607", + "source_location": "L1677", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_get_delivery_slip_template", @@ -93976,7 +94782,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1573", + "source_location": "L1643", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_get_inbound_slip_template", @@ -93986,7 +94792,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1728", + "source_location": "L1798", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_get_plan", @@ -93996,7 +94802,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1171", + "source_location": "L1241", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_get_plan_arrange_info", @@ -94006,7 +94812,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L228", + "source_location": "L232", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_get_plan_type_label", @@ -94016,7 +94822,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1641", + "source_location": "L1711", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_get_subpack_slip_template", @@ -94026,7 +94832,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L281", + "source_location": "L516", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_api_pl_plan_list_contract_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L285", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_list_plans", @@ -94036,7 +94852,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1314", + "source_location": "L1384", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_mark_plan_wait_notice", @@ -94046,7 +94862,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L158", + "source_location": "L162", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_normalize_subpack_slip_no", @@ -94056,7 +94872,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1134", + "source_location": "L1204", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_patch_plan_hazard_cert_ready", @@ -94066,7 +94882,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1102", + "source_location": "L1172", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_patch_plan_product_certs", @@ -94076,7 +94892,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L271", + "source_location": "L275", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_plan_plate_match", @@ -94086,7 +94902,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L257", + "source_location": "L261", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_plan_product_name_exists", @@ -94096,7 +94912,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L118", + "source_location": "L557", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_api_pl_plan_put_plan_side_contracts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L122", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_resolve_create_date", @@ -94106,7 +94932,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L102", + "source_location": "L106", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_resolve_list_product_name", @@ -94116,7 +94942,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1618", + "source_location": "L1688", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_save_delivery_slip_template", @@ -94126,7 +94952,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1584", + "source_location": "L1654", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_save_inbound_slip_template", @@ -94136,7 +94962,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1652", + "source_location": "L1722", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_save_subpack_slip_template", @@ -94146,7 +94972,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L183", + "source_location": "L187", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_subpack_slip_no_seq", @@ -94156,7 +94982,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L918", + "source_location": "L988", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_update_plan", @@ -94166,7 +94992,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1503", + "source_location": "L1573", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_update_plan_driver_feedback", @@ -94176,7 +95002,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1534", + "source_location": "L1604", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_api_pl_plan_update_plan_site_feedback", @@ -94440,7 +95266,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L468", + "source_location": "L472", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_models_pl_models_plplancontract", @@ -94567,6 +95393,28 @@ "target": "app_schemas_pl_plan_planarchivebrandqtyitem", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L31", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_schemas_pl_plan_plancontractgaplistresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L31", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -94688,6 +95536,17 @@ "target": "app_schemas_pl_plan_planread", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L31", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_schemas_pl_plan_plansidecontractsupdatebody", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -94737,7 +95596,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L56", + "source_location": "L60", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_schemas_pl_transport", @@ -94748,7 +95607,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L56", + "source_location": "L60", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_schemas_pl_transport_planarrangeinforead", @@ -94759,7 +95618,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L56", + "source_location": "L60", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_schemas_pl_transport_transportinventorylinkread", @@ -94770,7 +95629,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L56", + "source_location": "L60", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_schemas_pl_transport_transportioorderbrief", @@ -94781,7 +95640,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L56", + "source_location": "L60", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_schemas_pl_transport_transportsitelinkread", @@ -94792,7 +95651,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L51", + "source_location": "L55", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_brand_archive", @@ -94803,7 +95662,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L51", + "source_location": "L55", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", @@ -94847,7 +95706,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L62", + "source_location": "L66", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_dibang_bridge_service", @@ -94858,7 +95717,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L62", + "source_location": "L66", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", @@ -94869,7 +95728,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L63", + "source_location": "L67", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_inventory_link_read", @@ -94880,7 +95739,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L63", + "source_location": "L67", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_inventory_link_read_build_transport_inventory_link_read", @@ -94891,7 +95750,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L67", + "source_location": "L71", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_inventory_service", @@ -94902,7 +95761,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L67", + "source_location": "L71", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_inventory_service_apply_archive_inventory_for_plan", @@ -94913,7 +95772,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L64", + "source_location": "L68", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_io_order_service", @@ -94924,7 +95783,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1275", + "source_location": "L1345", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_io_order_service_build_io_order_site_url", @@ -94935,7 +95794,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L64", + "source_location": "L68", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_io_order_service_get_active_io_order_for_plan", @@ -94946,7 +95805,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L64", + "source_location": "L68", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_io_order_service_void_io_orders_for_plan", @@ -94957,7 +95816,40 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L54", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_services_pl_plan_contract_gap", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L54", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L54", + "weight": 1.0, + "source": "app_api_pl_plan", + "target": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service", @@ -94968,7 +95860,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_apply_archive_freight", @@ -94979,7 +95871,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_apply_archive_product_quantities", @@ -94990,7 +95882,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_apply_plan_driver_feedback", @@ -95001,7 +95893,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_apply_plan_site_feedback", @@ -95012,7 +95904,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_apply_vehicle_prefill_to_plan", @@ -95023,7 +95915,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_assert_contract_selectable_for_plan", @@ -95034,7 +95926,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_build_plan_product", @@ -95045,7 +95937,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_calc_plan_total_amount", @@ -95056,7 +95948,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_clear_draft_transport_for_plan", @@ -95067,7 +95959,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_clear_hazard_cert_ready", @@ -95078,7 +95970,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_collect_hazard_product_ids", @@ -95089,7 +95981,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_determine_plan_type", @@ -95100,7 +95992,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_fetch_hazard_flags_map", @@ -95111,7 +96003,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_load_plan_contracts_grouped", @@ -95122,7 +96014,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_plan_has_hazard_product_exists", @@ -95133,7 +96025,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", @@ -95144,7 +96036,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_record_plan_change", @@ -95155,7 +96047,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_replace_plan_contracts", @@ -95166,7 +96058,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm", @@ -95177,7 +96069,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_set_hazard_cert_ready", @@ -95188,7 +96080,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_sync_transport_prefill_for_plan", @@ -95199,7 +96091,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_update_plan_product_certs", @@ -95210,7 +96102,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_validate_create_full", @@ -95221,7 +96113,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", @@ -95232,7 +96124,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L68", + "source_location": "L72", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_plan_service_validate_plan_party_contracts", @@ -95243,7 +96135,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L52", + "source_location": "L56", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_product_display", @@ -95254,7 +96146,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L52", + "source_location": "L56", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_product_display_load_crm_product_alias_maps", @@ -95265,7 +96157,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L52", + "source_location": "L56", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_product_display_resolve_product_display_names", @@ -95276,7 +96168,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L65", + "source_location": "L69", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_site_link_read", @@ -95287,7 +96179,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L65", + "source_location": "L69", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_site_link_read_build_transport_site_link_read_from_row", @@ -95298,7 +96190,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L66", + "source_location": "L70", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_transport_site_service", @@ -95309,7 +96201,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L66", + "source_location": "L70", "weight": 1.0, "source": "app_api_pl_plan", "target": "app_services_pl_transport_site_service_revoke_site_links_for_transport", @@ -95342,7 +96234,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L437", + "source_location": "L441", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_api_pl_plan_resolve_list_product_name", @@ -95352,9 +96244,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L108", + "source_location": "L112", "weight": 1.0, - "source": "app_api_pl_plan_rationale_108", + "source": "app_api_pl_plan_rationale_112", "target": "app_api_pl_plan_resolve_list_product_name", "confidence_score": 1.0 }, @@ -95363,7 +96255,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L102", + "source_location": "L106", "weight": 1.0, "source": "app_api_pl_plan_resolve_list_product_name", "target": "app_models_pl_models_plplanproduct", @@ -95374,7 +96266,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L109", + "source_location": "L113", "weight": 1.0, "source": "app_api_pl_plan_resolve_list_product_name", "target": "app_services_pl_product_display_resolve_product_display_names", @@ -95385,7 +96277,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L766", + "source_location": "L836", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_api_pl_plan_resolve_create_date", @@ -95396,7 +96288,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L534", + "source_location": "L604", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_api_pl_plan_resolve_create_date", @@ -95407,7 +96299,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L631", + "source_location": "L701", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_api_pl_plan_resolve_create_date", @@ -95418,7 +96310,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L118", + "source_location": "L122", "weight": 1.0, "source": "app_api_pl_plan_resolve_create_date", "target": "app_api_pl_plan_py_date", @@ -95462,7 +96354,18 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L281", + "source_location": "L516", + "weight": 1.0, + "source": "app_api_pl_plan_list_contract_gaps", + "target": "app_api_pl_plan_py_date", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L285", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_api_pl_plan_py_date", @@ -95473,7 +96376,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L757", + "source_location": "L827", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_api_pl_plan_generate_plan_no", @@ -95484,7 +96387,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L525", + "source_location": "L595", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_api_pl_plan_generate_plan_no", @@ -95495,7 +96398,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L620", + "source_location": "L690", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_api_pl_plan_generate_plan_no", @@ -95506,7 +96409,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L122", + "source_location": "L126", "weight": 1.0, "source": "app_api_pl_plan_generate_plan_no", "target": "app_api_pl_plan_py_session", @@ -95516,9 +96419,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L123", + "source_location": "L127", "weight": 1.0, - "source": "app_api_pl_plan_rationale_123", + "source": "app_api_pl_plan_rationale_127", "target": "app_api_pl_plan_generate_plan_no", "confidence_score": 1.0 }, @@ -95527,7 +96430,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1427", + "source_location": "L1497", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_api_pl_plan_py_session", @@ -95538,7 +96441,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1365", + "source_location": "L1435", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_api_pl_plan_py_session", @@ -95549,7 +96452,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1338", + "source_location": "L1408", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan_wait_notice", "target": "app_api_pl_plan_py_session", @@ -95560,7 +96463,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L463", + "source_location": "L467", "weight": 1.0, "source": "app_api_pl_plan_count_plans_by_contract", "target": "app_api_pl_plan_py_session", @@ -95571,7 +96474,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L735", + "source_location": "L805", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_api_pl_plan_py_session", @@ -95582,7 +96485,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L517", + "source_location": "L587", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_api_pl_plan_py_session", @@ -95593,7 +96496,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L601", + "source_location": "L671", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_api_pl_plan_py_session", @@ -95604,7 +96507,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1689", + "source_location": "L1759", "weight": 1.0, "source": "app_api_pl_plan_delete_plan", "target": "app_api_pl_plan_py_session", @@ -95615,7 +96518,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1668", + "source_location": "L1738", "weight": 1.0, "source": "app_api_pl_plan_ensure_subpack_slip_no", "target": "app_api_pl_plan_py_session", @@ -95626,7 +96529,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1607", + "source_location": "L1677", "weight": 1.0, "source": "app_api_pl_plan_get_delivery_slip_template", "target": "app_api_pl_plan_py_session", @@ -95637,7 +96540,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1573", + "source_location": "L1643", "weight": 1.0, "source": "app_api_pl_plan_get_inbound_slip_template", "target": "app_api_pl_plan_py_session", @@ -95648,7 +96551,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1728", + "source_location": "L1798", "weight": 1.0, "source": "app_api_pl_plan_get_plan", "target": "app_api_pl_plan_py_session", @@ -95659,7 +96562,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1171", + "source_location": "L1241", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_api_pl_plan_py_session", @@ -95670,7 +96573,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1641", + "source_location": "L1711", "weight": 1.0, "source": "app_api_pl_plan_get_subpack_slip_template", "target": "app_api_pl_plan_py_session", @@ -95681,7 +96584,18 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L281", + "source_location": "L516", + "weight": 1.0, + "source": "app_api_pl_plan_list_contract_gaps", + "target": "app_api_pl_plan_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L285", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_api_pl_plan_py_session", @@ -95692,7 +96606,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1314", + "source_location": "L1384", "weight": 1.0, "source": "app_api_pl_plan_mark_plan_wait_notice", "target": "app_api_pl_plan_py_session", @@ -95703,7 +96617,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1134", + "source_location": "L1204", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "app_api_pl_plan_py_session", @@ -95714,7 +96628,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1102", + "source_location": "L1172", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_product_certs", "target": "app_api_pl_plan_py_session", @@ -95725,7 +96639,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L257", + "source_location": "L261", "weight": 1.0, "source": "app_api_pl_plan_plan_product_name_exists", "target": "app_api_pl_plan_py_session", @@ -95736,7 +96650,18 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1618", + "source_location": "L557", + "weight": 1.0, + "source": "app_api_pl_plan_put_plan_side_contracts", + "target": "app_api_pl_plan_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L1688", "weight": 1.0, "source": "app_api_pl_plan_save_delivery_slip_template", "target": "app_api_pl_plan_py_session", @@ -95747,7 +96672,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1584", + "source_location": "L1654", "weight": 1.0, "source": "app_api_pl_plan_save_inbound_slip_template", "target": "app_api_pl_plan_py_session", @@ -95758,7 +96683,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1652", + "source_location": "L1722", "weight": 1.0, "source": "app_api_pl_plan_save_subpack_slip_template", "target": "app_api_pl_plan_py_session", @@ -95769,7 +96694,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L918", + "source_location": "L988", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_api_pl_plan_py_session", @@ -95780,7 +96705,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1503", + "source_location": "L1573", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_api_pl_plan_py_session", @@ -95791,7 +96716,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1534", + "source_location": "L1604", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_api_pl_plan_py_session", @@ -95802,7 +96727,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L167", + "source_location": "L171", "weight": 1.0, "source": "app_api_pl_plan_normalize_subpack_slip_no", "target": "app_api_pl_plan_format_subpack_slip_no", @@ -95813,7 +96738,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L195", + "source_location": "L199", "weight": 1.0, "source": "app_api_pl_plan_ensure_subpack_slip_no", "target": "app_api_pl_plan_normalize_subpack_slip_no", @@ -95823,9 +96748,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L159", + "source_location": "L163", "weight": 1.0, - "source": "app_api_pl_plan_rationale_159", + "source": "app_api_pl_plan_rationale_163", "target": "app_api_pl_plan_normalize_subpack_slip_no", "confidence_score": 1.0 }, @@ -95834,7 +96759,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L184", + "source_location": "L188", "weight": 1.0, "source": "app_api_pl_plan_subpack_slip_no_seq", "target": "app_api_pl_plan_normalize_subpack_slip_no", @@ -95845,7 +96770,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L216", + "source_location": "L220", "weight": 1.0, "source": "app_api_pl_plan_ensure_subpack_slip_no", "target": "app_api_pl_plan_subpack_slip_no_seq", @@ -95856,7 +96781,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1668", + "source_location": "L1738", "weight": 1.0, "source": "app_api_pl_plan_ensure_subpack_slip_no", "target": "app_core_db_auth_dbusercontext", @@ -95868,7 +96793,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1673", + "source_location": "L1743", "weight": 1.0, "source": "app_api_pl_plan_ensure_subpack_slip_no", "target": "app_core_tenant_context_get_tenant_no" @@ -95878,7 +96803,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L191", + "source_location": "L195", "weight": 1.0, "source": "app_api_pl_plan_ensure_subpack_slip_no", "target": "app_models_pl_models_plplan", @@ -95888,9 +96813,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L192", + "source_location": "L196", "weight": 1.0, - "source": "app_api_pl_plan_rationale_192", + "source": "app_api_pl_plan_rationale_196", "target": "app_api_pl_plan_ensure_subpack_slip_no", "confidence_score": 1.0 }, @@ -95899,7 +96824,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L760", + "source_location": "L830", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_api_pl_plan_determine_plan_type", @@ -95910,7 +96835,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L225", + "source_location": "L229", "weight": 1.0, "source": "app_api_pl_plan_determine_plan_type", "target": "app_services_pl_plan_service_determine_plan_type", @@ -95921,7 +96846,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L237", + "source_location": "L241", "weight": 1.0, "source": "app_api_pl_plan_generate_notify_message", "target": "app_models_pl_models_plplan", @@ -95932,7 +96857,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L327", + "source_location": "L331", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_api_pl_plan_plan_product_name_exists", @@ -95943,7 +96868,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L328", + "source_location": "L332", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_api_pl_plan_plan_plate_match", @@ -95954,7 +96879,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L281", + "source_location": "L285", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_core_db_auth_dbusercontext", @@ -95966,7 +96891,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L311", + "source_location": "L315", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_core_tenant_context_get_tenant_no" @@ -95976,7 +96901,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L281", + "source_location": "L285", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_schemas_pl_plan_planlistresponse", @@ -95988,7 +96913,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L408", + "source_location": "L412", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids" @@ -95999,7 +96924,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L372", + "source_location": "L376", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_data_scope_apply_pl_scope" @@ -96010,7 +96935,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L398", + "source_location": "L402", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_plan_service_fetch_hazard_flags_map" @@ -96021,7 +96946,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L413", + "source_location": "L417", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_plan_service_load_plan_contracts_grouped" @@ -96032,7 +96957,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L367", + "source_location": "L371", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_plan_service_plan_has_hazard_product_exists" @@ -96043,7 +96968,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L370", + "source_location": "L374", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists" @@ -96054,7 +96979,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L419", + "source_location": "L423", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm" @@ -96065,7 +96990,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L403", + "source_location": "L407", "weight": 1.0, "source": "app_api_pl_plan_list_plans", "target": "app_services_pl_product_display_load_crm_product_alias_maps" @@ -96075,7 +97000,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L463", + "source_location": "L467", "weight": 1.0, "source": "app_api_pl_plan_count_plans_by_contract", "target": "app_core_db_auth_dbusercontext", @@ -96087,7 +97012,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L470", + "source_location": "L474", "weight": 1.0, "source": "app_api_pl_plan_count_plans_by_contract", "target": "app_core_tenant_context_get_tenant_no" @@ -96098,7 +97023,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L484", + "source_location": "L488", "weight": 1.0, "source": "app_api_pl_plan_count_plans_by_contract", "target": "app_services_pl_data_scope_apply_pl_scope" @@ -96108,7 +97033,106 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L517", + "source_location": "L516", + "weight": 1.0, + "source": "app_api_pl_plan_list_contract_gaps", + "target": "app_core_db_auth_dbusercontext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L539", + "weight": 1.0, + "source": "app_api_pl_plan_list_contract_gaps", + "target": "app_core_tenant_context_get_tenant_no" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L516", + "weight": 1.0, + "source": "app_api_pl_plan_list_contract_gaps", + "target": "app_schemas_pl_plan_plancontractgaplistresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L540", + "weight": 1.0, + "source": "app_api_pl_plan_list_contract_gaps", + "target": "app_services_pl_plan_contract_gap_list_plan_contract_gaps" + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L557", + "weight": 1.0, + "source": "app_api_pl_plan_put_plan_side_contracts", + "target": "app_core_db_auth_dbusercontext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L565", + "weight": 1.0, + "source": "app_api_pl_plan_put_plan_side_contracts", + "target": "app_core_tenant_context_get_tenant_no" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L557", + "weight": 1.0, + "source": "app_api_pl_plan_put_plan_side_contracts", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L557", + "weight": 1.0, + "source": "app_api_pl_plan_put_plan_side_contracts", + "target": "app_schemas_pl_plan_plansidecontractsupdatebody", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L567", + "weight": 1.0, + "source": "app_api_pl_plan_put_plan_side_contracts", + "target": "app_services_pl_plan_contract_gap_update_plan_side_contracts" + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L587", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_core_db_auth_dbusercontext", @@ -96120,7 +97144,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L522", + "source_location": "L592", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_core_tenant_context_get_tenant_no" @@ -96131,7 +97155,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L531", + "source_location": "L601", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_core_utils_generate_uuid" @@ -96141,7 +97165,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L530", + "source_location": "L600", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_models_pl_models_plplan", @@ -96152,7 +97176,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L517", + "source_location": "L587", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_schemas_pl_plan_plancreate", @@ -96163,7 +97187,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L517", + "source_location": "L587", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_schemas_pl_plan_planread", @@ -96175,7 +97199,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L582", + "source_location": "L652", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_services_pl_plan_service_build_plan_product" @@ -96186,7 +97210,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L593", + "source_location": "L663", "weight": 1.0, "source": "app_api_pl_plan_create_plan", "target": "app_services_pl_plan_service_calc_plan_total_amount" @@ -96196,7 +97220,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L601", + "source_location": "L671", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_core_db_auth_dbusercontext", @@ -96208,88 +97232,11 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L608", + "source_location": "L678", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_core_tenant_context_get_tenant_no" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L628", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_core_utils_generate_uuid" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L627", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_models_pl_models_plplan", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "parameter_type", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L601", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_schemas_pl_plan_plancreatefull", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "return_type", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L601", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_schemas_pl_plan_planwithproducts", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L709", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_services_pl_plan_service_apply_vehicle_prefill_to_plan" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L686", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_services_pl_plan_service_build_plan_product" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L668", - "weight": 1.0, - "source": "app_api_pl_plan_create_plan_full", - "target": "app_services_pl_plan_service_calc_plan_total_amount" - }, { "relation": "calls", "context": "call", @@ -96299,6 +97246,83 @@ "source_location": "L698", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", + "target": "app_core_utils_generate_uuid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L697", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", + "target": "app_models_pl_models_plplan", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L671", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", + "target": "app_schemas_pl_plan_plancreatefull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L671", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", + "target": "app_schemas_pl_plan_planwithproducts", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L779", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", + "target": "app_services_pl_plan_service_apply_vehicle_prefill_to_plan" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L756", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", + "target": "app_services_pl_plan_service_build_plan_product" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L738", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", + "target": "app_services_pl_plan_service_calc_plan_total_amount" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L768", + "weight": 1.0, + "source": "app_api_pl_plan_create_plan_full", "target": "app_services_pl_plan_service_replace_plan_contracts" }, { @@ -96307,7 +97331,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L680", + "source_location": "L750", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm" @@ -96318,7 +97342,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L607", + "source_location": "L677", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_services_pl_plan_service_validate_create_full" @@ -96329,7 +97353,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L609", + "source_location": "L679", "weight": 1.0, "source": "app_api_pl_plan_create_plan_full", "target": "app_services_pl_plan_service_validate_plan_party_contracts" @@ -96338,9 +97362,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L606", + "source_location": "L676", "weight": 1.0, - "source": "app_api_pl_plan_rationale_606", + "source": "app_api_pl_plan_rationale_676", "target": "app_api_pl_plan_create_plan_full", "confidence_score": 1.0 }, @@ -96349,7 +97373,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L735", + "source_location": "L805", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_core_db_auth_dbusercontext", @@ -96361,7 +97385,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L743", + "source_location": "L813", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_core_tenant_context_get_tenant_no" @@ -96372,7 +97396,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L763", + "source_location": "L833", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_core_utils_generate_uuid" @@ -96382,7 +97406,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L762", + "source_location": "L832", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_models_pl_models_plplan", @@ -96393,7 +97417,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L816", + "source_location": "L886", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_models_pl_models_plplanproduct", @@ -96404,7 +97428,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L735", + "source_location": "L805", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_schemas_pl_plan_createfromcontractrequest", @@ -96415,7 +97439,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L735", + "source_location": "L805", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_schemas_pl_plan_planread", @@ -96427,7 +97451,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L754", + "source_location": "L824", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_services_pl_plan_service_assert_contract_selectable_for_plan" @@ -96438,7 +97462,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L811", + "source_location": "L881", "weight": 1.0, "source": "app_api_pl_plan_create_from_contract", "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm" @@ -96448,7 +97472,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1462", + "source_location": "L1532", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_api_pl_plan_get_plan", @@ -96459,133 +97483,12 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1728", + "source_location": "L1798", "weight": 1.0, "source": "app_api_pl_plan_get_plan", "target": "app_core_db_auth_dbusercontext", "confidence_score": 1.0 }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L854", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_core_tenant_context_get_tenant_no" - }, - { - "relation": "references", - "context": "return_type", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L1728", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_models_pl_models_plplan", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "return_type", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L849", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_schemas_pl_plan_planwithproducts", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L872", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L1740", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_services_pl_data_scope_assert_pl_row_in_scope", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L867", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_services_pl_plan_service_fetch_hazard_flags_map" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L904", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_services_pl_plan_service_load_plan_contracts_grouped" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "app/api/pl/plan.py", - "source_location": "L880", - "weight": 1.0, - "source": "app_api_pl_plan_get_plan", - "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L1530", - "weight": 1.0, - "source": "app_api_pl_plan_update_plan_driver_feedback", - "target": "app_api_pl_plan_get_plan", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L1564", - "weight": 1.0, - "source": "app_api_pl_plan_update_plan_site_feedback", - "target": "app_api_pl_plan_get_plan", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "parameter_type", - "confidence": "EXTRACTED", - "source_file": "app/api/pl/plan.py", - "source_location": "L918", - "weight": 1.0, - "source": "app_api_pl_plan_update_plan", - "target": "app_core_db_auth_dbusercontext", - "confidence_score": 1.0 - }, { "relation": "calls", "context": "call", @@ -96594,6 +97497,127 @@ "source_file": "app/api/pl/plan.py", "source_location": "L924", "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_core_tenant_context_get_tenant_no" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L1798", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_models_pl_models_plplan", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L919", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_schemas_pl_plan_planwithproducts", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L942", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L1810", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_services_pl_data_scope_assert_pl_row_in_scope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L937", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_services_pl_plan_service_fetch_hazard_flags_map" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L974", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_services_pl_plan_service_load_plan_contracts_grouped" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L950", + "weight": 1.0, + "source": "app_api_pl_plan_get_plan", + "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L1600", + "weight": 1.0, + "source": "app_api_pl_plan_update_plan_driver_feedback", + "target": "app_api_pl_plan_get_plan", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L1634", + "weight": 1.0, + "source": "app_api_pl_plan_update_plan_site_feedback", + "target": "app_api_pl_plan_get_plan", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/api/pl/plan.py", + "source_location": "L988", + "weight": 1.0, + "source": "app_api_pl_plan_update_plan", + "target": "app_core_db_auth_dbusercontext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "app/api/pl/plan.py", + "source_location": "L994", + "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_core_tenant_context_get_tenant_no" }, @@ -96602,7 +97626,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L918", + "source_location": "L988", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_schemas_pl_plan_planread", @@ -96613,7 +97637,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L918", + "source_location": "L988", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_schemas_pl_plan_planupdate", @@ -96625,7 +97649,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1045", + "source_location": "L1115", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_build_plan_product" @@ -96636,7 +97660,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1061", + "source_location": "L1131", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_calc_plan_total_amount" @@ -96647,7 +97671,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1085", + "source_location": "L1155", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_clear_draft_transport_for_plan" @@ -96658,7 +97682,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1059", + "source_location": "L1129", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_clear_hazard_cert_ready" @@ -96669,7 +97693,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1006", + "source_location": "L1076", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_collect_hazard_product_ids" @@ -96680,7 +97704,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L954", + "source_location": "L1024", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_load_plan_contracts_grouped" @@ -96691,7 +97715,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L980", + "source_location": "L1050", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_replace_plan_contracts" @@ -96702,7 +97726,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1023", + "source_location": "L1093", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_resolve_hazard_flags_from_crm" @@ -96713,7 +97737,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1075", + "source_location": "L1145", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_sync_transport_prefill_for_plan" @@ -96724,7 +97748,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L969", + "source_location": "L1039", "weight": 1.0, "source": "app_api_pl_plan_update_plan", "target": "app_services_pl_plan_service_validate_plan_party_contracts" @@ -96734,7 +97758,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1102", + "source_location": "L1172", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_product_certs", "target": "app_core_db_auth_dbusercontext", @@ -96746,7 +97770,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1109", + "source_location": "L1179", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_product_certs", "target": "app_core_tenant_context_get_tenant_no" @@ -96756,7 +97780,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1102", + "source_location": "L1172", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_product_certs", "target": "app_schemas_pl_plan_planproductcertsupdate", @@ -96767,7 +97791,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1102", + "source_location": "L1172", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_product_certs", "target": "app_schemas_pl_plan_planwithproducts", @@ -96779,7 +97803,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1111", + "source_location": "L1181", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_product_certs", "target": "app_services_pl_plan_service_update_plan_product_certs" @@ -96788,9 +97812,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1108", + "source_location": "L1178", "weight": 1.0, - "source": "app_api_pl_plan_rationale_1108", + "source": "app_api_pl_plan_rationale_1178", "target": "app_api_pl_plan_patch_plan_product_certs", "confidence_score": 1.0 }, @@ -96799,7 +97823,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1134", + "source_location": "L1204", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "app_core_db_auth_dbusercontext", @@ -96811,7 +97835,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1141", + "source_location": "L1211", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "app_core_tenant_context_get_tenant_no" @@ -96821,7 +97845,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1134", + "source_location": "L1204", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "app_schemas_pl_plan_hazardcertreadybody", @@ -96832,7 +97856,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1134", + "source_location": "L1204", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "app_schemas_pl_plan_planwithproducts", @@ -96844,7 +97868,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1143", + "source_location": "L1213", "weight": 1.0, "source": "app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "app_services_pl_plan_service_set_hazard_cert_ready" @@ -96854,7 +97878,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1197", + "source_location": "L1267", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_api_pl_plan_build_driver_url", @@ -96865,7 +97889,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1171", + "source_location": "L1241", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_core_db_auth_dbusercontext", @@ -96877,7 +97901,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1177", + "source_location": "L1247", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_core_tenant_context_get_tenant_no" @@ -96887,7 +97911,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1171", + "source_location": "L1241", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_schemas_pl_transport_planarrangeinforead", @@ -96899,7 +97923,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1278", + "source_location": "L1348", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_schemas_pl_transport_transportioorderbrief" @@ -96910,7 +97934,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1288", + "source_location": "L1358", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_schemas_pl_transport_transportsitelinkread" @@ -96921,7 +97945,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1260", + "source_location": "L1330", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_services_pl_inventory_link_read_build_transport_inventory_link_read" @@ -96932,7 +97956,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1283", + "source_location": "L1353", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_services_pl_io_order_service_build_io_order_site_url" @@ -96943,7 +97967,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1272", + "source_location": "L1342", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_services_pl_io_order_service_get_active_io_order_for_plan" @@ -96954,7 +97978,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1222", + "source_location": "L1292", "weight": 1.0, "source": "app_api_pl_plan_get_plan_arrange_info", "target": "app_services_pl_site_link_read_build_transport_site_link_read_from_row" @@ -96963,9 +97987,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1176", + "source_location": "L1246", "weight": 1.0, - "source": "app_api_pl_plan_rationale_1176", + "source": "app_api_pl_plan_rationale_1246", "target": "app_api_pl_plan_get_plan_arrange_info", "confidence_score": 1.0 }, @@ -96974,7 +97998,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1314", + "source_location": "L1384", "weight": 1.0, "source": "app_api_pl_plan_mark_plan_wait_notice", "target": "app_core_db_auth_dbusercontext", @@ -96986,7 +98010,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1320", + "source_location": "L1390", "weight": 1.0, "source": "app_api_pl_plan_mark_plan_wait_notice", "target": "app_core_tenant_context_get_tenant_no" @@ -96996,7 +98020,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1314", + "source_location": "L1384", "weight": 1.0, "source": "app_api_pl_plan_mark_plan_wait_notice", "target": "app_schemas_pl_plan_planread", @@ -97007,7 +98031,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1338", + "source_location": "L1408", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan_wait_notice", "target": "app_core_db_auth_dbusercontext", @@ -97019,7 +98043,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1344", + "source_location": "L1414", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan_wait_notice", "target": "app_core_tenant_context_get_tenant_no" @@ -97029,7 +98053,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1338", + "source_location": "L1408", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan_wait_notice", "target": "app_schemas_pl_plan_planread", @@ -97040,7 +98064,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1365", + "source_location": "L1435", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_core_db_auth_dbusercontext", @@ -97052,7 +98076,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1371", + "source_location": "L1441", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_core_tenant_context_get_tenant_no" @@ -97062,7 +98086,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1365", + "source_location": "L1435", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_schemas_pl_plan_planread", @@ -97074,7 +98098,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1392", + "source_location": "L1462", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport" @@ -97085,7 +98109,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1409", + "source_location": "L1479", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_services_pl_io_order_service_void_io_orders_for_plan" @@ -97096,7 +98120,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1400", + "source_location": "L1470", "weight": 1.0, "source": "app_api_pl_plan_cancel_plan", "target": "app_services_pl_transport_site_service_revoke_site_links_for_transport" @@ -97105,9 +98129,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1370", + "source_location": "L1440", "weight": 1.0, - "source": "app_api_pl_plan_rationale_1370", + "source": "app_api_pl_plan_rationale_1440", "target": "app_api_pl_plan_cancel_plan", "confidence_score": 1.0 }, @@ -97116,7 +98140,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1427", + "source_location": "L1497", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_core_db_auth_dbusercontext", @@ -97128,7 +98152,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1433", + "source_location": "L1503", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_core_tenant_context_get_tenant_no" @@ -97138,7 +98162,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1427", + "source_location": "L1497", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_schemas_pl_plan_planarchivebody", @@ -97149,7 +98173,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1427", + "source_location": "L1497", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_schemas_pl_plan_planwithproducts", @@ -97161,7 +98185,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1467", + "source_location": "L1537", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_services_pl_inventory_service_apply_archive_inventory_for_plan" @@ -97172,7 +98196,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1475", + "source_location": "L1545", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_services_pl_plan_service_apply_archive_freight" @@ -97183,7 +98207,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1464", + "source_location": "L1534", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_services_pl_plan_service_apply_archive_product_quantities" @@ -97194,7 +98218,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1488", + "source_location": "L1558", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_services_pl_plan_service_record_plan_change" @@ -97205,7 +98229,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1452", + "source_location": "L1522", "weight": 1.0, "source": "app_api_pl_plan_archive_plan", "target": "app_services_pl_plan_service_validate_hazard_cert_ready_for_transport" @@ -97215,7 +98239,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1503", + "source_location": "L1573", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_core_db_auth_dbusercontext", @@ -97227,7 +98251,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1509", + "source_location": "L1579", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_core_tenant_context_get_tenant_no" @@ -97237,7 +98261,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1503", + "source_location": "L1573", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_schemas_pl_plan_plandriverfeedbackupdatebody", @@ -97248,7 +98272,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1503", + "source_location": "L1573", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_schemas_pl_plan_planwithproducts", @@ -97260,7 +98284,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1511", + "source_location": "L1581", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_services_pl_plan_service_apply_plan_driver_feedback" @@ -97271,7 +98295,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1518", + "source_location": "L1588", "weight": 1.0, "source": "app_api_pl_plan_update_plan_driver_feedback", "target": "app_services_pl_plan_service_record_plan_change" @@ -97281,7 +98305,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1534", + "source_location": "L1604", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_core_db_auth_dbusercontext", @@ -97293,7 +98317,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1541", + "source_location": "L1611", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_core_tenant_context_get_tenant_no" @@ -97303,7 +98327,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1534", + "source_location": "L1604", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_schemas_pl_plan_plansitefeedbackupdatebody", @@ -97314,7 +98338,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1534", + "source_location": "L1604", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_schemas_pl_plan_planwithproducts", @@ -97326,7 +98350,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1543", + "source_location": "L1613", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_services_pl_plan_service_apply_plan_site_feedback" @@ -97337,7 +98361,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1552", + "source_location": "L1622", "weight": 1.0, "source": "app_api_pl_plan_update_plan_site_feedback", "target": "app_services_pl_plan_service_record_plan_change" @@ -97347,7 +98371,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1573", + "source_location": "L1643", "weight": 1.0, "source": "app_api_pl_plan_get_inbound_slip_template", "target": "app_core_db_auth_dbusercontext", @@ -97359,7 +98383,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1578", + "source_location": "L1648", "weight": 1.0, "source": "app_api_pl_plan_get_inbound_slip_template", "target": "app_core_tenant_context_get_tenant_no" @@ -97369,7 +98393,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1584", + "source_location": "L1654", "weight": 1.0, "source": "app_api_pl_plan_save_inbound_slip_template", "target": "app_core_db_auth_dbusercontext", @@ -97381,7 +98405,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1590", + "source_location": "L1660", "weight": 1.0, "source": "app_api_pl_plan_save_inbound_slip_template", "target": "app_core_tenant_context_get_tenant_no" @@ -97391,7 +98415,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1584", + "source_location": "L1654", "weight": 1.0, "source": "app_api_pl_plan_save_inbound_slip_template", "target": "app_schemas_pl_plan_planinboundsliptemplatesave", @@ -97402,7 +98426,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1607", + "source_location": "L1677", "weight": 1.0, "source": "app_api_pl_plan_get_delivery_slip_template", "target": "app_core_db_auth_dbusercontext", @@ -97414,7 +98438,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1612", + "source_location": "L1682", "weight": 1.0, "source": "app_api_pl_plan_get_delivery_slip_template", "target": "app_core_tenant_context_get_tenant_no" @@ -97424,7 +98448,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1618", + "source_location": "L1688", "weight": 1.0, "source": "app_api_pl_plan_save_delivery_slip_template", "target": "app_core_db_auth_dbusercontext", @@ -97436,7 +98460,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1624", + "source_location": "L1694", "weight": 1.0, "source": "app_api_pl_plan_save_delivery_slip_template", "target": "app_core_tenant_context_get_tenant_no" @@ -97446,7 +98470,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1618", + "source_location": "L1688", "weight": 1.0, "source": "app_api_pl_plan_save_delivery_slip_template", "target": "app_schemas_pl_plan_plandeliverysliptemplatesave", @@ -97457,7 +98481,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1641", + "source_location": "L1711", "weight": 1.0, "source": "app_api_pl_plan_get_subpack_slip_template", "target": "app_core_db_auth_dbusercontext", @@ -97469,7 +98493,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1646", + "source_location": "L1716", "weight": 1.0, "source": "app_api_pl_plan_get_subpack_slip_template", "target": "app_core_tenant_context_get_tenant_no" @@ -97479,7 +98503,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1652", + "source_location": "L1722", "weight": 1.0, "source": "app_api_pl_plan_save_subpack_slip_template", "target": "app_core_db_auth_dbusercontext", @@ -97491,7 +98515,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1658", + "source_location": "L1728", "weight": 1.0, "source": "app_api_pl_plan_save_subpack_slip_template", "target": "app_core_tenant_context_get_tenant_no" @@ -97501,7 +98525,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1652", + "source_location": "L1722", "weight": 1.0, "source": "app_api_pl_plan_save_subpack_slip_template", "target": "app_schemas_pl_plan_plansubpacksliptemplatesave", @@ -97512,7 +98536,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", - "source_location": "L1689", + "source_location": "L1759", "weight": 1.0, "source": "app_api_pl_plan_delete_plan", "target": "app_core_db_auth_dbusercontext", @@ -97524,7 +98548,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1704", + "source_location": "L1774", "weight": 1.0, "source": "app_api_pl_plan_delete_plan", "target": "app_core_delete_guard_assert_row_deletable_by_creator" @@ -97535,7 +98559,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1704", + "source_location": "L1774", "weight": 1.0, "source": "app_api_pl_plan_delete_plan", "target": "app_core_delete_guard_user_info_from_context" @@ -97546,7 +98570,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "app/api/pl/plan.py", - "source_location": "L1694", + "source_location": "L1764", "weight": 1.0, "source": "app_api_pl_plan_delete_plan", "target": "app_core_tenant_context_get_tenant_no" @@ -109062,6 +110086,17 @@ "target": "app_core_api_crypto_is_ts_in_window", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/core/api_crypto.py", + "source_location": "L8", + "weight": 1.0, + "source": "app_core_api_crypto", + "target": "time", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "submodule_import", @@ -109315,6 +110350,17 @@ "target": "app_core_response_error_response", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/core/api_crypto_middleware.py", + "source_location": "L7", + "weight": 1.0, + "source": "app_core_api_crypto_middleware", + "target": "time", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -109784,6 +110830,17 @@ "target": "fastapi", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/core/api_request_log_middleware.py", + "source_location": "L5", + "weight": 1.0, + "source": "app_core_api_request_log_middleware", + "target": "time", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -112504,7 +113561,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L12", + "source_location": "L13", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_core_config", @@ -114389,6 +115446,17 @@ "target": "app_core_db_auth", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L24", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_core_db_auth", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -114496,6 +115564,17 @@ "target": "app_core_db_auth_dbusercontext", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L24", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_core_db_auth_dbusercontext", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -117283,6 +118362,17 @@ "target": "app_core_login_crypto_validate_ts", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/core/login_crypto.py", + "source_location": "L7", + "weight": 1.0, + "source": "app_core_login_crypto", + "target": "time", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -120334,7 +121424,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L13", + "source_location": "L14", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_core_utils", @@ -121803,6 +122893,28 @@ "target": "app_core_utils_generate_uuid", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L14", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_core_utils_generate_uuid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L141", + "weight": 1.0, + "source": "app_services_duty_schedule_ensure_dict_data", + "target": "app_core_utils_generate_uuid", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -122083,7 +123195,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L205", + "source_location": "L212", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_resolve_vehicle", "target": "app_core_utils_generate_uuid", @@ -122413,7 +123525,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L13", + "source_location": "L14", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_core_utils_generate_id", @@ -122424,7 +123536,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L586", + "source_location": "L724", "weight": 1.0, "source": "app_services_duty_schedule_grab", "target": "app_core_utils_generate_id", @@ -122435,7 +123547,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L255", + "source_location": "L393", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_core_utils_generate_id", @@ -122836,6 +123948,17 @@ "target": "app_core_wechat_pay_wechatpayv2client", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/core/wechat_pay.py", + "source_location": "L17", + "weight": 1.0, + "source": "app_core_wechat_pay", + "target": "time", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -124066,6 +125189,17 @@ "source": "app_crud_crm_quote_build_quote_filters", "target": "app_crud_base_crudbase_exists" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L47", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_side_contract_exists", + "target": "app_crud_base_crudbase_exists" + }, { "relation": "calls", "context": "call", @@ -157772,6 +158906,17 @@ "target": "fastapi", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L6", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "fastapi", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -157860,6 +159005,17 @@ "target": "fastapi", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L5", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "fastapi", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -161010,7 +162166,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L14", + "source_location": "L13", "weight": 1.0, "source": "app_schemas_duty_dutyassignmentin", "target": "app_models_base_basemodel", @@ -161020,7 +162176,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L27", + "source_location": "L39", "weight": 1.0, "source": "app_schemas_duty_dutydaysavebody", "target": "app_models_base_basemodel", @@ -161030,7 +162186,17 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L37", + "source_location": "L54", + "weight": 1.0, + "source": "app_schemas_duty_dutydictensurebody", + "target": "app_models_base_basemodel", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "app/schemas/duty.py", + "source_location": "L49", "weight": 1.0, "source": "app_schemas_duty_dutygrabbody", "target": "app_models_base_basemodel", @@ -161040,7 +162206,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L33", + "source_location": "L45", "weight": 1.0, "source": "app_schemas_duty_dutylinkbody", "target": "app_models_base_basemodel", @@ -161050,7 +162216,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L20", + "source_location": "L19", "weight": 1.0, "source": "app_schemas_duty_dutyslotsavein", "target": "app_models_base_basemodel", @@ -161190,7 +162356,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L382", + "source_location": "L383", "weight": 1.0, "source": "app_schemas_pl_base_data_carrierlistresponse", "target": "app_models_base_basemodel", @@ -161230,7 +162396,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L311", + "source_location": "L312", "weight": 1.0, "source": "app_schemas_pl_base_data_driverbase", "target": "app_models_base_basemodel", @@ -161240,7 +162406,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L355", + "source_location": "L356", "weight": 1.0, "source": "app_schemas_pl_base_data_driverlistresponse", "target": "app_models_base_basemodel", @@ -161250,7 +162416,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L328", + "source_location": "L329", "weight": 1.0, "source": "app_schemas_pl_base_data_driverupdate", "target": "app_models_base_basemodel", @@ -161260,7 +162426,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L239", + "source_location": "L240", "weight": 1.0, "source": "app_schemas_pl_base_data_personnelbase", "target": "app_models_base_basemodel", @@ -161270,7 +162436,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L392", + "source_location": "L393", "weight": 1.0, "source": "app_schemas_pl_base_data_personnellistresponse", "target": "app_models_base_basemodel", @@ -161280,7 +162446,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L268", + "source_location": "L269", "weight": 1.0, "source": "app_schemas_pl_base_data_personnelupdate", "target": "app_models_base_basemodel", @@ -161300,7 +162466,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L365", + "source_location": "L366", "weight": 1.0, "source": "app_schemas_pl_base_data_vehicledrivercreate", "target": "app_models_base_basemodel", @@ -161310,7 +162476,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L372", + "source_location": "L373", "weight": 1.0, "source": "app_schemas_pl_base_data_vehicledriverread", "target": "app_models_base_basemodel", @@ -161320,7 +162486,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L387", + "source_location": "L388", "weight": 1.0, "source": "app_schemas_pl_base_data_vehiclelistresponse", "target": "app_models_base_basemodel", @@ -161340,7 +162506,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L196", + "source_location": "L197", "weight": 1.0, "source": "app_schemas_pl_base_data_vehicleupdate", "target": "app_models_base_basemodel", @@ -161906,6 +163072,26 @@ "target": "app_models_base_basemodel", "confidence_score": 1.0 }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L448", + "weight": 1.0, + "source": "app_schemas_pl_plan_plancontractgaplistresponse", + "target": "app_models_base_basemodel", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L429", + "weight": 1.0, + "source": "app_schemas_pl_plan_plancontractgapread", + "target": "app_models_base_basemodel", + "confidence_score": 1.0 + }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -162016,6 +163202,16 @@ "target": "app_models_base_basemodel", "confidence_score": 1.0 }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L424", + "weight": 1.0, + "source": "app_schemas_pl_plan_plansidecontractsupdatebody", + "target": "app_models_base_basemodel", + "confidence_score": 1.0 + }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -163260,7 +164456,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", - "source_location": "L65", + "source_location": "L75", "weight": 1.0, "source": "app_models_duty_models_dutyassignment", "target": "base", @@ -163270,7 +164466,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", - "source_location": "L25", + "source_location": "L31", "weight": 1.0, "source": "app_models_duty_models_dutyday", "target": "base", @@ -163280,7 +164476,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", - "source_location": "L45", + "source_location": "L51", "weight": 1.0, "source": "app_models_duty_models_dutyslot", "target": "base", @@ -166624,7 +167820,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", - "source_location": "L65", + "source_location": "L75", "weight": 1.0, "source": "app_models_duty_models", "target": "app_models_duty_models_dutyassignment", @@ -166634,7 +167830,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", - "source_location": "L25", + "source_location": "L31", "weight": 1.0, "source": "app_models_duty_models", "target": "app_models_duty_models_dutyday", @@ -166644,7 +167840,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", - "source_location": "L45", + "source_location": "L51", "weight": 1.0, "source": "app_models_duty_models", "target": "app_models_duty_models_dutyslot", @@ -166665,7 +167861,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_duty_models", @@ -166687,7 +167883,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_duty_models_dutyday", @@ -166698,7 +167894,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L76", + "source_location": "L214", "weight": 1.0, "source": "app_services_duty_schedule_day_dict", "target": "app_models_duty_models_dutyday", @@ -166708,7 +167904,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_models_duty_models_dutyday", @@ -166719,7 +167915,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L96", + "source_location": "L234", "weight": 1.0, "source": "app_services_duty_schedule_load_day_by_date", "target": "app_models_duty_models_dutyday", @@ -166730,7 +167926,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L108", + "source_location": "L246", "weight": 1.0, "source": "app_services_duty_schedule_load_day_by_id", "target": "app_models_duty_models_dutyday", @@ -166741,7 +167937,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L254", + "source_location": "L392", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_models_duty_models_dutyday", @@ -166752,7 +167948,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L140", + "source_location": "L278", "weight": 1.0, "source": "app_services_duty_schedule_serialize_day", "target": "app_models_duty_models_dutyday", @@ -166763,7 +167959,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_duty_models_dutyslot", @@ -166774,7 +167970,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L76", + "source_location": "L214", "weight": 1.0, "source": "app_services_duty_schedule_day_dict", "target": "app_models_duty_models_dutyslot", @@ -166784,7 +167980,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_models_duty_models_dutyslot", @@ -166795,7 +167991,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L116", + "source_location": "L254", "weight": 1.0, "source": "app_services_duty_schedule_load_slots", "target": "app_models_duty_models_dutyslot", @@ -166806,7 +168002,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L298", + "source_location": "L436", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_models_duty_models_dutyslot", @@ -166817,7 +168013,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L63", + "source_location": "L201", "weight": 1.0, "source": "app_services_duty_schedule_slot_dict", "target": "app_models_duty_models_dutyslot", @@ -166828,7 +168024,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_duty_models_dutyassignment", @@ -166839,7 +168035,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L54", + "source_location": "L192", "weight": 1.0, "source": "app_services_duty_schedule_assignment_dict", "target": "app_models_duty_models_dutyassignment", @@ -166850,7 +168046,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L76", + "source_location": "L214", "weight": 1.0, "source": "app_services_duty_schedule_day_dict", "target": "app_models_duty_models_dutyassignment", @@ -166860,7 +168056,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L14", + "source_location": "L15", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_models_duty_models_dutyassignment", @@ -166871,7 +168067,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L585", + "source_location": "L723", "weight": 1.0, "source": "app_services_duty_schedule_grab", "target": "app_models_duty_models_dutyassignment", @@ -166882,7 +168078,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L124", + "source_location": "L262", "weight": 1.0, "source": "app_services_duty_schedule_load_assignments_for_slots", "target": "app_models_duty_models_dutyassignment", @@ -166893,7 +168089,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L369", + "source_location": "L507", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_models_duty_models_dutyassignment", @@ -166904,7 +168100,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L63", + "source_location": "L201", "weight": 1.0, "source": "app_services_duty_schedule_slot_dict", "target": "app_models_duty_models_dutyassignment", @@ -167229,7 +168425,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_models", @@ -167323,6 +168519,17 @@ "target": "app_models_models", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L20", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_models_models", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -167412,7 +168619,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_models_sysuser", @@ -167422,7 +168629,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_models_models_sysuser", @@ -167433,7 +168640,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L495", + "source_location": "L633", "weight": 1.0, "source": "app_services_duty_schedule_resolve_grab_user", "target": "app_models_models_sysuser", @@ -167509,7 +168716,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_models_sysrole", @@ -167519,7 +168726,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_models_models_sysrole", @@ -167551,7 +168758,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_models_models_sysuserrole", @@ -167561,7 +168768,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L26", + "source_location": "L29", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_models_models_sysuserrole", @@ -167681,6 +168888,38 @@ "target": "app_models_models_sysethnic", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L29", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_models_models_sysdictdata", + "confidence_score": 1.0 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L29", + "weight": 0.8, + "source": "app_services_duty_schedule_dutybizerror", + "target": "app_models_models_sysdictdata", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L140", + "weight": 1.0, + "source": "app_services_duty_schedule_ensure_dict_data", + "target": "app_models_models_sysdictdata", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -167712,6 +168951,17 @@ "target": "app_models_models_sysdictdata", "confidence_score": 0.5 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L20", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_models_models_sysdictdata", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -168488,6 +169738,17 @@ "target": "app_models_pl_models", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L10", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_models_pl_models", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -168713,7 +169974,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L204", + "source_location": "L211", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_resolve_vehicle", "target": "app_models_pl_models_plvehicle", @@ -169285,6 +170546,39 @@ "target": "app_models_pl_models_plplan", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L10", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_models_pl_models_plplan", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L88", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "target": "app_models_pl_models_plplan", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L228", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_models_pl_models_plplan", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -169536,6 +170830,17 @@ "target": "app_models_pl_models_plplancontract", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L10", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_models_pl_models_plplancontract", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -169742,6 +171047,17 @@ "target": "app_models_pl_models_plplanproduct", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L10", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_models_pl_models_plplanproduct", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -176090,7 +177406,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L14", + "source_location": "L13", "weight": 1.0, "source": "app_schemas_duty", "target": "app_schemas_duty_dutyassignmentin", @@ -176100,7 +177416,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L27", + "source_location": "L39", "weight": 1.0, "source": "app_schemas_duty", "target": "app_schemas_duty_dutydaysavebody", @@ -176110,7 +177426,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L37", + "source_location": "L54", + "weight": 1.0, + "source": "app_schemas_duty", + "target": "app_schemas_duty_dutydictensurebody", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/schemas/duty.py", + "source_location": "L49", "weight": 1.0, "source": "app_schemas_duty", "target": "app_schemas_duty_dutygrabbody", @@ -176120,7 +177446,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L33", + "source_location": "L45", "weight": 1.0, "source": "app_schemas_duty", "target": "app_schemas_duty_dutylinkbody", @@ -176130,7 +177456,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", - "source_location": "L20", + "source_location": "L19", "weight": 1.0, "source": "app_schemas_duty", "target": "app_schemas_duty_dutyslotsavein", @@ -176151,7 +177477,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L27", + "source_location": "L30", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_schemas_duty", @@ -176184,7 +177510,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L457", + "source_location": "L529", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "target": "app_schemas_duty_dutyassignmentin", @@ -176195,7 +177521,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L545", + "source_location": "L617", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "target": "app_schemas_duty_dutyassignmentin", @@ -176206,18 +177532,28 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L288", + "source_location": "L360", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "target": "app_schemas_duty_dutyassignmentin", "confidence_score": 1.0 }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "app/schemas/duty.py", + "source_location": "L31", + "weight": 1.0, + "source": "app_schemas_duty_dutyslotsavein", + "target": "app_schemas_duty_dutyslotsavein_split_work_plans", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L27", + "source_location": "L30", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_schemas_duty_dutyslotsavein", @@ -176227,7 +177563,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L27", + "source_location": "L30", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_schemas_duty_dutyslotsavein", @@ -176249,7 +177585,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L453", + "source_location": "L525", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "target": "app_schemas_duty_dutyslotsavein", @@ -176260,7 +177596,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L541", + "source_location": "L613", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "target": "app_schemas_duty_dutyslotsavein", @@ -176271,7 +177607,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L284", + "source_location": "L356", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "target": "app_schemas_duty_dutyslotsavein", @@ -176282,7 +177618,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L27", + "source_location": "L30", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_schemas_duty_dutydaysavebody", @@ -176292,7 +177628,7 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "app/services/duty_schedule.py", - "source_location": "L27", + "source_location": "L30", "weight": 0.8, "source": "app_services_duty_schedule_dutybizerror", "target": "app_schemas_duty_dutydaysavebody", @@ -176303,7 +177639,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L231", + "source_location": "L369", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_schemas_duty_dutydaysavebody", @@ -176325,7 +177661,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L450", + "source_location": "L522", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "target": "app_schemas_duty_dutydaysavebody", @@ -176336,7 +177672,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L538", + "source_location": "L610", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "target": "app_schemas_duty_dutydaysavebody", @@ -176347,7 +177683,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L281", + "source_location": "L353", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "target": "app_schemas_duty_dutydaysavebody", @@ -176838,7 +178174,7 @@ "context": "export", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight", @@ -176849,7 +178185,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementbase", @@ -176860,7 +178196,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementcreate", @@ -176871,7 +178207,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementlistquery", @@ -176882,7 +178218,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementlistresponse", @@ -176893,7 +178229,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementread", @@ -176904,7 +178240,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementtransportread", @@ -176915,7 +178251,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementupdate", @@ -176926,7 +178262,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_freightsettlementwithtransports", @@ -176937,7 +178273,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_remittancevouchercreate", @@ -176948,7 +178284,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L63", + "source_location": "L66", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_freight_remittancevoucherread", @@ -176959,7 +178295,7 @@ "context": "export", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory", @@ -176970,7 +178306,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_documentreminderread", @@ -176981,7 +178317,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_documentreminderstatsread", @@ -176992,7 +178328,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_documentreminderupdate", @@ -177003,7 +178339,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventoryledgerquery", @@ -177014,7 +178350,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventoryledgerresponse", @@ -177025,7 +178361,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventoryread", @@ -177036,7 +178372,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorysummaryitem", @@ -177047,7 +178383,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorysummaryquery", @@ -177058,7 +178394,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorysummaryresponse", @@ -177069,7 +178405,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorytransactionquery", @@ -177080,7 +178416,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorytransactionread", @@ -177091,7 +178427,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorytransactionresponse", @@ -177102,7 +178438,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorywarningread", @@ -177113,7 +178449,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorywarningthreshold", @@ -177124,7 +178460,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_inventorywarningupdate", @@ -177135,7 +178471,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_transportstatsitem", @@ -177146,7 +178482,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_transportstatsquery", @@ -177157,7 +178493,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L75", + "source_location": "L78", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_inventory_transportstatsresponse", @@ -177196,6 +178532,28 @@ "target": "app_schemas_pl_plan_planbase", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/__init__.py", + "source_location": "L33", + "weight": 1.0, + "source": "app_schemas_pl_init", + "target": "app_schemas_pl_plan_plancontractgaplistresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/__init__.py", + "source_location": "L33", + "weight": 1.0, + "source": "app_schemas_pl_init", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -177306,6 +178664,17 @@ "target": "app_schemas_pl_plan_planread", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/__init__.py", + "source_location": "L33", + "weight": 1.0, + "source": "app_schemas_pl_init", + "target": "app_schemas_pl_plan_plansidecontractsupdatebody", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -177344,7 +178713,7 @@ "context": "export", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport", @@ -177355,7 +178724,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_approvalrecordread", @@ -177366,7 +178735,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_approvalrequest", @@ -177377,7 +178746,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_approvalsubmit", @@ -177388,7 +178757,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportbase", @@ -177399,7 +178768,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportcreate", @@ -177410,7 +178779,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportfeedback", @@ -177421,7 +178790,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportlistquery", @@ -177432,7 +178801,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportlistresponse", @@ -177443,7 +178812,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportread", @@ -177454,7 +178823,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportupdate", @@ -177465,7 +178834,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L50", + "source_location": "L53", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_transport_transportwithplans", @@ -177476,7 +178845,7 @@ "context": "export", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge", @@ -177487,7 +178856,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargeapplycreate", @@ -177498,7 +178867,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargeapplylistresponse", @@ -177509,7 +178878,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargeapplyoption", @@ -177520,7 +178889,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargeapplyread", @@ -177531,7 +178900,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargeapplyupdate", @@ -177542,7 +178911,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargerecordcreate", @@ -177553,7 +178922,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargerecordlistresponse", @@ -177564,7 +178933,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargerecordread", @@ -177575,7 +178944,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", - "source_location": "L95", + "source_location": "L98", "weight": 1.0, "source": "app_schemas_pl_init", "target": "app_schemas_pl_vehicle_recharge_vehiclerechargerecordupdate", @@ -177635,7 +179004,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L382", + "source_location": "L383", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_carrierlistresponse", @@ -177695,7 +179064,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L311", + "source_location": "L312", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_driverbase", @@ -177705,7 +179074,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L324", + "source_location": "L325", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_drivercreate", @@ -177715,7 +179084,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L355", + "source_location": "L356", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_driverlistresponse", @@ -177725,7 +179094,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L342", + "source_location": "L343", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_driverread", @@ -177735,7 +179104,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L328", + "source_location": "L329", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_driverupdate", @@ -177745,7 +179114,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L239", + "source_location": "L240", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_personnelbase", @@ -177755,7 +179124,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L263", + "source_location": "L264", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_personnelcreate", @@ -177765,7 +179134,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L301", + "source_location": "L302", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_personneldetailread", @@ -177775,7 +179144,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L392", + "source_location": "L393", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_personnellistresponse", @@ -177785,7 +179154,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L286", + "source_location": "L287", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_personnelread", @@ -177795,7 +179164,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L268", + "source_location": "L269", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_personnelupdate", @@ -177825,7 +179194,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L228", + "source_location": "L229", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_vehicledetailread", @@ -177835,7 +179204,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L365", + "source_location": "L366", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_vehicledrivercreate", @@ -177845,7 +179214,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L372", + "source_location": "L373", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_vehicledriverread", @@ -177855,7 +179224,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L387", + "source_location": "L388", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_vehiclelistresponse", @@ -177875,7 +179244,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L213", + "source_location": "L214", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_vehicleread", @@ -177885,7 +179254,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L196", + "source_location": "L197", "weight": 1.0, "source": "app_schemas_pl_base_data", "target": "app_schemas_pl_base_data_vehicleupdate", @@ -178100,7 +179469,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L218", + "source_location": "L221", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "target": "app_schemas_pl_base_data_vehiclepersonnelrow", @@ -178111,7 +179480,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L252", + "source_location": "L255", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "app_schemas_pl_base_data_vehiclepersonnelrow", @@ -178122,7 +179491,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L291", + "source_location": "L294", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "app_schemas_pl_base_data_vehiclepersonnelrow", @@ -178144,7 +179513,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L278", + "source_location": "L285", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_schemas_pl_base_data_vehiclepersonnelrow", @@ -178220,7 +179589,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L44", + "source_location": "L61", "weight": 1.0, "source": "app_services_pl_cert_required_service_cert_row_complete", "target": "app_schemas_pl_base_data_certrow", @@ -178231,7 +179600,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L99", + "source_location": "L116", "weight": 1.0, "source": "app_services_pl_cert_required_service_collect_required_cert_errors", "target": "app_schemas_pl_base_data_certrow", @@ -178242,7 +179611,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L60", + "source_location": "L77", "weight": 1.0, "source": "app_services_pl_cert_required_service_find_cert_for_required", "target": "app_schemas_pl_base_data_certrow", @@ -178253,7 +179622,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L80", + "source_location": "L97", "weight": 1.0, "source": "app_services_pl_cert_required_service_missing_field_labels", "target": "app_schemas_pl_base_data_certrow", @@ -178264,7 +179633,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L194", + "source_location": "L211", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "target": "app_schemas_pl_base_data_certrow", @@ -178275,7 +179644,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L146", + "source_location": "L163", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_personnel_required_certs", "target": "app_schemas_pl_base_data_certrow", @@ -178286,7 +179655,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L170", + "source_location": "L187", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "target": "app_schemas_pl_base_data_certrow", @@ -178297,7 +179666,7 @@ "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L291", + "source_location": "L294", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "app_schemas_pl_base_data_certrow", @@ -178394,7 +179763,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L213", + "source_location": "L214", "weight": 1.0, "source": "app_schemas_pl_base_data_vehicleread", "target": "app_schemas_pl_base_data_vehiclebase", @@ -178426,7 +179795,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L228", + "source_location": "L229", "weight": 1.0, "source": "app_schemas_pl_base_data_vehicledetailread", "target": "app_schemas_pl_base_data_vehicleread", @@ -178436,7 +179805,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L263", + "source_location": "L264", "weight": 1.0, "source": "app_schemas_pl_base_data_personnelcreate", "target": "app_schemas_pl_base_data_personnelbase", @@ -178446,7 +179815,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L286", + "source_location": "L287", "weight": 1.0, "source": "app_schemas_pl_base_data_personnelread", "target": "app_schemas_pl_base_data_personnelbase", @@ -178478,7 +179847,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L301", + "source_location": "L302", "weight": 1.0, "source": "app_schemas_pl_base_data_personneldetailread", "target": "app_schemas_pl_base_data_personnelread", @@ -178488,7 +179857,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L324", + "source_location": "L325", "weight": 1.0, "source": "app_schemas_pl_base_data_drivercreate", "target": "app_schemas_pl_base_data_driverbase", @@ -178498,7 +179867,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", - "source_location": "L342", + "source_location": "L343", "weight": 1.0, "source": "app_schemas_pl_base_data_driverread", "target": "app_schemas_pl_base_data_driverbase", @@ -179875,7 +181244,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L222", + "source_location": "L229", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_schemas_pl_paste_recognize_pastecommitbody", @@ -179897,7 +181266,7 @@ "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L222", + "source_location": "L229", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_schemas_pl_paste_recognize_pastecommitresult", @@ -179973,6 +181342,26 @@ "target": "app_schemas_pl_plan_planbase", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L448", + "weight": 1.0, + "source": "app_schemas_pl_plan", + "target": "app_schemas_pl_plan_plancontractgaplistresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L429", + "weight": 1.0, + "source": "app_schemas_pl_plan", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -180133,6 +181522,16 @@ "target": "app_schemas_pl_plan_planread", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L424", + "weight": 1.0, + "source": "app_schemas_pl_plan", + "target": "app_schemas_pl_plan_plansidecontractsupdatebody", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -180205,6 +181604,17 @@ "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L11", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_schemas_pl_plan", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -180363,6 +181773,39 @@ "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", "confidence_score": 0.5 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L11", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_schemas_pl_plan_planproductread", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L88", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "target": "app_schemas_pl_plan_planproductread", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L120", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_load_products_by_plan_ids", + "target": "app_schemas_pl_plan_planproductread", + "confidence_score": 1.0 + }, { "relation": "uses", "confidence": "INFERRED", @@ -180403,6 +181846,39 @@ "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", "confidence_score": 0.5 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L11", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_schemas_pl_plan_plancontractlink", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L88", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "target": "app_schemas_pl_plan_plancontractlink", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L228", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_schemas_pl_plan_plancontractlink", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -180886,6 +182362,80 @@ "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", "confidence_score": 0.5 }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L9", + "weight": 0.8, + "source": "app_schemas_pl_plan_plansidecontractsupdatebody", + "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L9", + "weight": 0.8, + "source": "app_schemas_pl_plan_plancontractgapread", + "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", + "confidence_score": 0.5 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L11", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L88", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L141", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L228", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_schemas_pl_plan_plancontractgapread", + "confidence_score": 1.0 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "app/schemas/pl/plan.py", + "source_location": "L9", + "weight": 0.8, + "source": "app_schemas_pl_plan_plancontractgaplistresponse", + "target": "app_schemas_pl_resource_snapshot_planresourcesnapshotmixin", + "confidence_score": 0.5 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -192630,6 +194180,17 @@ "target": "app_services_db_mappers_parse_site_feedback_images", "confidence_score": 1.0 }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "app/services/db/mappers.py", + "source_location": "L248", + "weight": 1.0, + "source": "app_services_db_mappers_datetime_end_of_day", + "target": "time" + }, { "relation": "imports", "context": "import", @@ -193189,7 +194750,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L458", + "source_location": "L596", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_services_duty_schedule_assert_user_is_duty_staff", @@ -193199,7 +194760,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L54", + "source_location": "L192", "weight": 1.0, "source": "app_services_duty_schedule", "target": "app_services_duty_schedule_assignment_dict", @@ -193209,230 +194770,10 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L49", + "source_location": "L80", "weight": 1.0, "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_build_public_url", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L223", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_count_active_assignments", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L76", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_day_dict", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L32", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_dutybizerror", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L146", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_empty_day_skeleton", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L180", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_get_day_detail", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L157", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_get_month_summary", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L515", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_get_public_page", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L536", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_grab", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L421", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_list_duty_staff_users", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L491", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_list_public_users", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L124", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_load_assignments_for_slots", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L96", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_load_day_by_date", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L108", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_load_day_by_id", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L116", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_load_slots", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L45", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_new_access_token", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L36", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_normalize_person_name", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L395", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_resolve_duty_staff_role_id", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L495", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_resolve_grab_user", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L231", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_save_day", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L140", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_serialize_day", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L207", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_set_link_status", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L63", - "weight": 1.0, - "source": "app_services_duty_schedule", - "target": "app_services_duty_schedule_slot_dict", + "target": "app_services_duty_schedule_build_dict_value_from_label", "confidence_score": 1.0 }, { @@ -193442,9 +194783,309 @@ "source_location": "L187", "weight": 1.0, "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_build_public_url", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L361", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_count_active_assignments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L214", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_day_dict", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L35", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_dutybizerror", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L284", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_empty_day_skeleton", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L94", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_ensure_dict_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L52", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_format_hhmm", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L58", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_format_time_label", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L318", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_get_day_detail", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L295", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_get_month_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L653", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_get_public_page", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L674", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_grab", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L75", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_join_work_plans", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L559", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_list_duty_staff_users", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L629", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_list_public_users", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L262", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_load_assignments_for_slots", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L234", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_load_day_by_date", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L246", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_load_day_by_id", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L161", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_load_dict_label_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L254", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_load_slots", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L183", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_new_access_token", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L174", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L39", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_parse_hhmm", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L533", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_resolve_duty_staff_role_id", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L633", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_resolve_grab_user", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L369", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_save_day", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L278", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_serialize_day", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L345", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_set_link_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L201", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_slot_dict", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L325", + "weight": 1.0, + "source": "app_services_duty_schedule", "target": "app_services_duty_schedule_soft_delete_assignment", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L69", + "weight": 1.0, + "source": "app_services_duty_schedule", + "target": "app_services_duty_schedule_split_work_plans", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -193460,7 +195101,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule", @@ -193471,7 +195112,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L461", + "source_location": "L599", "weight": 1.0, "source": "app_services_duty_schedule_assert_user_is_duty_staff", "target": "app_services_duty_schedule_dutybizerror", @@ -193481,7 +195122,7 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L32", + "source_location": "L35", "weight": 1.0, "source": "app_services_duty_schedule_dutybizerror", "target": "valueerror", @@ -193492,7 +195133,18 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L518", + "source_location": "L105", + "weight": 1.0, + "source": "app_services_duty_schedule_ensure_dict_data", + "target": "app_services_duty_schedule_dutybizerror", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L656", "weight": 1.0, "source": "app_services_duty_schedule_get_public_page", "target": "app_services_duty_schedule_dutybizerror", @@ -193503,7 +195155,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L539", + "source_location": "L677", "weight": 1.0, "source": "app_services_duty_schedule_grab", "target": "app_services_duty_schedule_dutybizerror", @@ -193514,7 +195166,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L39", + "source_location": "L177", "weight": 1.0, "source": "app_services_duty_schedule_normalize_person_name", "target": "app_services_duty_schedule_dutybizerror", @@ -193525,7 +195177,18 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L498", + "source_location": "L45", + "weight": 1.0, + "source": "app_services_duty_schedule_parse_hhmm", + "target": "app_services_duty_schedule_dutybizerror", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L636", "weight": 1.0, "source": "app_services_duty_schedule_resolve_grab_user", "target": "app_services_duty_schedule_dutybizerror", @@ -193536,7 +195199,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L245", + "source_location": "L383", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_services_duty_schedule_dutybizerror", @@ -193547,7 +195210,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L211", + "source_location": "L349", "weight": 1.0, "source": "app_services_duty_schedule_set_link_status", "target": "app_services_duty_schedule_dutybizerror", @@ -193558,7 +195221,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L200", + "source_location": "L338", "weight": 1.0, "source": "app_services_duty_schedule_soft_delete_assignment", "target": "app_services_duty_schedule_dutybizerror", @@ -193569,7 +195232,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule_dutybizerror", @@ -193741,25 +195404,14 @@ "target": "valueerror" }, { - "relation": "calls", - "context": "call", + "relation": "references", + "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L553", + "source_location": "L39", "weight": 1.0, - "source": "app_services_duty_schedule_grab", - "target": "app_services_duty_schedule_normalize_person_name", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L361", - "weight": 1.0, - "source": "app_services_duty_schedule_save_day", - "target": "app_services_duty_schedule_normalize_person_name", + "source": "app_services_duty_schedule_parse_hhmm", + "target": "time", "confidence_score": 1.0 }, { @@ -193767,10 +195419,10 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", - "target": "app_services_duty_schedule_normalize_person_name", + "target": "app_services_duty_schedule_parse_hhmm", "confidence_score": 1.0 }, { @@ -193778,10 +195430,10 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L37", + "source_location": "L50", "weight": 1.0, - "source": "tests_test_duty_schedule_test_normalize_person_name_empty", - "target": "app_services_duty_schedule_normalize_person_name", + "source": "tests_test_duty_schedule_test_format_time_label_cross_day", + "target": "app_services_duty_schedule_parse_hhmm", "confidence_score": 1.0 }, { @@ -193789,10 +195441,10 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L32", + "source_location": "L46", "weight": 1.0, - "source": "tests_test_duty_schedule_test_normalize_person_name_ok", - "target": "app_services_duty_schedule_normalize_person_name", + "source": "tests_test_duty_schedule_test_format_time_label_same_day", + "target": "app_services_duty_schedule_parse_hhmm", "confidence_score": 1.0 }, { @@ -193800,10 +195452,32 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L42", + "source_location": "L39", "weight": 1.0, - "source": "tests_test_duty_schedule_test_normalize_person_name_too_long", - "target": "app_services_duty_schedule_normalize_person_name", + "source": "tests_test_duty_schedule_test_parse_hhmm", + "target": "app_services_duty_schedule_parse_hhmm", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L52", + "weight": 1.0, + "source": "app_services_duty_schedule_format_hhmm", + "target": "time", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L58", + "weight": 1.0, + "source": "app_services_duty_schedule_format_time_label", + "target": "time", "confidence_score": 1.0 }, { @@ -193811,153 +195485,98 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L257", - "weight": 1.0, - "source": "app_services_duty_schedule_save_day", - "target": "app_services_duty_schedule_new_access_token", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L91", - "weight": 1.0, - "source": "app_services_duty_schedule_day_dict", - "target": "app_services_duty_schedule_build_public_url", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L54", - "weight": 1.0, - "source": "app_services_duty_schedule_assignment_dict", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L72", - "weight": 1.0, - "source": "app_services_duty_schedule_slot_dict", - "target": "app_services_duty_schedule_assignment_dict", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L76", - "weight": 1.0, - "source": "app_services_duty_schedule_day_dict", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L146", - "weight": 1.0, - "source": "app_services_duty_schedule_empty_day_skeleton", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L180", - "weight": 1.0, - "source": "app_services_duty_schedule_get_day_detail", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L157", - "weight": 1.0, - "source": "app_services_duty_schedule_get_month_summary", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L515", - "weight": 1.0, - "source": "app_services_duty_schedule_get_public_page", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L536", - "weight": 1.0, - "source": "app_services_duty_schedule_grab", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L231", - "weight": 1.0, - "source": "app_services_duty_schedule_save_day", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L140", - "weight": 1.0, - "source": "app_services_duty_schedule_serialize_day", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L207", - "weight": 1.0, - "source": "app_services_duty_schedule_set_link_status", - "target": "app_services_duty_schedule_py_any", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "generic_arg", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", "source_location": "L63", "weight": 1.0, - "source": "app_services_duty_schedule_slot_dict", - "target": "app_services_duty_schedule_py_any", + "source": "app_services_duty_schedule_format_time_label", + "target": "app_services_duty_schedule_format_hhmm", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L21", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_services_duty_schedule_format_time_label", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L50", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_format_time_label_cross_day", + "target": "app_services_duty_schedule_format_time_label", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L54", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_format_time_label_empty", + "target": "app_services_duty_schedule_format_time_label", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L46", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_format_time_label_same_day", + "target": "app_services_duty_schedule_format_time_label", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L21", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_services_duty_schedule_split_work_plans", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L59", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_work_plans_join_split", + "target": "app_services_duty_schedule_split_work_plans", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L21", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_services_duty_schedule_join_work_plans", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L58", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_work_plans_join_split", + "target": "app_services_duty_schedule_join_work_plans", "confidence_score": 1.0 }, { @@ -193965,32 +195584,32 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L82", + "source_location": "L122", "weight": 1.0, - "source": "app_services_duty_schedule_day_dict", - "target": "app_services_duty_schedule_slot_dict", + "source": "app_services_duty_schedule_ensure_dict_data", + "target": "app_services_duty_schedule_build_dict_value_from_label", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L21", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_services_duty_schedule_build_dict_value_from_label", "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L143", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L64", "weight": 1.0, - "source": "app_services_duty_schedule_serialize_day", - "target": "app_services_duty_schedule_day_dict", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L181", - "weight": 1.0, - "source": "app_services_duty_schedule_get_day_detail", - "target": "app_services_duty_schedule_load_day_by_date", + "source": "tests_test_duty_schedule_test_build_dict_value_from_label", + "target": "app_services_duty_schedule_build_dict_value_from_label", "confidence_score": 1.0 }, { @@ -193998,32 +195617,43 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L96", + "source_location": "L94", "weight": 1.0, - "source": "app_services_duty_schedule_load_day_by_date", - "target": "app_services_duty_schedule_py_date", - "confidence_score": 1.0 - }, - { - "relation": "references", - "context": "parameter_type", - "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L96", - "weight": 1.0, - "source": "app_services_duty_schedule_load_day_by_date", + "source": "app_services_duty_schedule_ensure_dict_data", "target": "app_services_duty_schedule_py_session", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L21", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_services_duty_schedule_ensure_dict_data", + "confidence_score": 1.0 + }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "app/services/duty_schedule.py", - "source_location": "L252", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L89", "weight": 1.0, - "source": "app_services_duty_schedule_save_day", - "target": "app_services_duty_schedule_load_day_by_date", + "source": "tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", + "target": "app_services_duty_schedule_ensure_dict_data", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L76", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", + "target": "app_services_duty_schedule_ensure_dict_data", "confidence_score": 1.0 }, { @@ -194031,7 +195661,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L458", + "source_location": "L596", "weight": 1.0, "source": "app_services_duty_schedule_assert_user_is_duty_staff", "target": "app_services_duty_schedule_py_session", @@ -194042,7 +195672,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L223", + "source_location": "L361", "weight": 1.0, "source": "app_services_duty_schedule_count_active_assignments", "target": "app_services_duty_schedule_py_session", @@ -194053,7 +195683,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L180", + "source_location": "L318", "weight": 1.0, "source": "app_services_duty_schedule_get_day_detail", "target": "app_services_duty_schedule_py_session", @@ -194064,7 +195694,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L157", + "source_location": "L295", "weight": 1.0, "source": "app_services_duty_schedule_get_month_summary", "target": "app_services_duty_schedule_py_session", @@ -194075,7 +195705,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L515", + "source_location": "L653", "weight": 1.0, "source": "app_services_duty_schedule_get_public_page", "target": "app_services_duty_schedule_py_session", @@ -194086,7 +195716,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L536", + "source_location": "L674", "weight": 1.0, "source": "app_services_duty_schedule_grab", "target": "app_services_duty_schedule_py_session", @@ -194097,7 +195727,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L421", + "source_location": "L559", "weight": 1.0, "source": "app_services_duty_schedule_list_duty_staff_users", "target": "app_services_duty_schedule_py_session", @@ -194108,7 +195738,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L491", + "source_location": "L629", "weight": 1.0, "source": "app_services_duty_schedule_list_public_users", "target": "app_services_duty_schedule_py_session", @@ -194119,7 +195749,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L124", + "source_location": "L262", "weight": 1.0, "source": "app_services_duty_schedule_load_assignments_for_slots", "target": "app_services_duty_schedule_py_session", @@ -194130,7 +195760,18 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L108", + "source_location": "L234", + "weight": 1.0, + "source": "app_services_duty_schedule_load_day_by_date", + "target": "app_services_duty_schedule_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L246", "weight": 1.0, "source": "app_services_duty_schedule_load_day_by_id", "target": "app_services_duty_schedule_py_session", @@ -194141,7 +195782,18 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L116", + "source_location": "L161", + "weight": 1.0, + "source": "app_services_duty_schedule_load_dict_label_map", + "target": "app_services_duty_schedule_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L254", "weight": 1.0, "source": "app_services_duty_schedule_load_slots", "target": "app_services_duty_schedule_py_session", @@ -194152,7 +195804,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L395", + "source_location": "L533", "weight": 1.0, "source": "app_services_duty_schedule_resolve_duty_staff_role_id", "target": "app_services_duty_schedule_py_session", @@ -194163,7 +195815,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L495", + "source_location": "L633", "weight": 1.0, "source": "app_services_duty_schedule_resolve_grab_user", "target": "app_services_duty_schedule_py_session", @@ -194174,7 +195826,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L231", + "source_location": "L369", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_services_duty_schedule_py_session", @@ -194185,7 +195837,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L140", + "source_location": "L278", "weight": 1.0, "source": "app_services_duty_schedule_serialize_day", "target": "app_services_duty_schedule_py_session", @@ -194196,7 +195848,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L207", + "source_location": "L345", "weight": 1.0, "source": "app_services_duty_schedule_set_link_status", "target": "app_services_duty_schedule_py_session", @@ -194207,18 +195859,293 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L187", + "source_location": "L325", "weight": 1.0, "source": "app_services_duty_schedule_soft_delete_assignment", "target": "app_services_duty_schedule_py_session", "confidence_score": 1.0 }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L691", + "weight": 1.0, + "source": "app_services_duty_schedule_grab", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L499", + "weight": 1.0, + "source": "app_services_duty_schedule_save_day", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L21", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L109", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_normalize_person_name_empty", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L104", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_normalize_person_name_ok", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L114", + "weight": 1.0, + "source": "tests_test_duty_schedule_test_normalize_person_name_too_long", + "target": "app_services_duty_schedule_normalize_person_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L395", + "weight": 1.0, + "source": "app_services_duty_schedule_save_day", + "target": "app_services_duty_schedule_new_access_token", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L229", + "weight": 1.0, + "source": "app_services_duty_schedule_day_dict", + "target": "app_services_duty_schedule_build_public_url", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L192", + "weight": 1.0, + "source": "app_services_duty_schedule_assignment_dict", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L210", + "weight": 1.0, + "source": "app_services_duty_schedule_slot_dict", + "target": "app_services_duty_schedule_assignment_dict", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L214", + "weight": 1.0, + "source": "app_services_duty_schedule_day_dict", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L284", + "weight": 1.0, + "source": "app_services_duty_schedule_empty_day_skeleton", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L318", + "weight": 1.0, + "source": "app_services_duty_schedule_get_day_detail", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L295", + "weight": 1.0, + "source": "app_services_duty_schedule_get_month_summary", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L653", + "weight": 1.0, + "source": "app_services_duty_schedule_get_public_page", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L674", + "weight": 1.0, + "source": "app_services_duty_schedule_grab", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L369", + "weight": 1.0, + "source": "app_services_duty_schedule_save_day", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L278", + "weight": 1.0, + "source": "app_services_duty_schedule_serialize_day", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L345", + "weight": 1.0, + "source": "app_services_duty_schedule_set_link_status", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L201", + "weight": 1.0, + "source": "app_services_duty_schedule_slot_dict", + "target": "app_services_duty_schedule_py_any", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L220", + "weight": 1.0, + "source": "app_services_duty_schedule_day_dict", + "target": "app_services_duty_schedule_slot_dict", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L281", + "weight": 1.0, + "source": "app_services_duty_schedule_serialize_day", + "target": "app_services_duty_schedule_day_dict", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L319", + "weight": 1.0, + "source": "app_services_duty_schedule_get_day_detail", + "target": "app_services_duty_schedule_load_day_by_date", + "confidence_score": 1.0 + }, { "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L146", + "source_location": "L234", + "weight": 1.0, + "source": "app_services_duty_schedule_load_day_by_date", + "target": "app_services_duty_schedule_py_date", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L390", + "weight": 1.0, + "source": "app_services_duty_schedule_save_day", + "target": "app_services_duty_schedule_load_day_by_date", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/duty_schedule.py", + "source_location": "L284", "weight": 1.0, "source": "app_services_duty_schedule_empty_day_skeleton", "target": "app_services_duty_schedule_py_date", @@ -194229,7 +196156,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L180", + "source_location": "L318", "weight": 1.0, "source": "app_services_duty_schedule_get_day_detail", "target": "app_services_duty_schedule_py_date", @@ -194240,7 +196167,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L159", + "source_location": "L297", "weight": 1.0, "source": "app_services_duty_schedule_get_month_summary", "target": "app_services_duty_schedule_py_date", @@ -194251,7 +196178,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L212", + "source_location": "L350", "weight": 1.0, "source": "app_services_duty_schedule_set_link_status", "target": "app_services_duty_schedule_load_day_by_id", @@ -194262,7 +196189,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L275", + "source_location": "L413", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_services_duty_schedule_load_slots", @@ -194273,7 +196200,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L141", + "source_location": "L279", "weight": 1.0, "source": "app_services_duty_schedule_serialize_day", "target": "app_services_duty_schedule_load_slots", @@ -194284,7 +196211,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L142", + "source_location": "L280", "weight": 1.0, "source": "app_services_duty_schedule_serialize_day", "target": "app_services_duty_schedule_load_assignments_for_slots", @@ -194295,7 +196222,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L184", + "source_location": "L322", "weight": 1.0, "source": "app_services_duty_schedule_get_day_detail", "target": "app_services_duty_schedule_serialize_day", @@ -194306,7 +196233,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L174", + "source_location": "L312", "weight": 1.0, "source": "app_services_duty_schedule_get_month_summary", "target": "app_services_duty_schedule_serialize_day", @@ -194317,7 +196244,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L526", + "source_location": "L664", "weight": 1.0, "source": "app_services_duty_schedule_get_public_page", "target": "app_services_duty_schedule_serialize_day", @@ -194328,7 +196255,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L392", + "source_location": "L530", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_services_duty_schedule_serialize_day", @@ -194339,7 +196266,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L220", + "source_location": "L358", "weight": 1.0, "source": "app_services_duty_schedule_set_link_status", "target": "app_services_duty_schedule_serialize_day", @@ -194350,7 +196277,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L183", + "source_location": "L321", "weight": 1.0, "source": "app_services_duty_schedule_get_day_detail", "target": "app_services_duty_schedule_empty_day_skeleton", @@ -194361,7 +196288,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L580", + "source_location": "L718", "weight": 1.0, "source": "app_services_duty_schedule_grab", "target": "app_services_duty_schedule_count_active_assignments", @@ -194372,7 +196299,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L282", + "source_location": "L420", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_services_duty_schedule_count_active_assignments", @@ -194383,7 +196310,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L367", + "source_location": "L505", "weight": 1.0, "source": "app_services_duty_schedule_save_day", "target": "app_services_duty_schedule_assert_user_is_duty_staff", @@ -194394,7 +196321,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule_save_day", @@ -194405,7 +196332,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L464", + "source_location": "L536", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "target": "app_services_duty_schedule_save_day", @@ -194416,7 +196343,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L552", + "source_location": "L624", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "target": "app_services_duty_schedule_save_day", @@ -194427,7 +196354,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L295", + "source_location": "L367", "weight": 1.0, "source": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "target": "app_services_duty_schedule_save_day", @@ -194438,7 +196365,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L474", + "source_location": "L612", "weight": 1.0, "source": "app_services_duty_schedule_assert_user_is_duty_staff", "target": "app_services_duty_schedule_resolve_duty_staff_role_id", @@ -194449,7 +196376,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L423", + "source_location": "L561", "weight": 1.0, "source": "app_services_duty_schedule_list_duty_staff_users", "target": "app_services_duty_schedule_resolve_duty_staff_role_id", @@ -194459,9 +196386,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L396", + "source_location": "L534", "weight": 1.0, - "source": "app_services_duty_schedule_rationale_396", + "source": "app_services_duty_schedule_rationale_534", "target": "app_services_duty_schedule_resolve_duty_staff_role_id", "confidence_score": 1.0 }, @@ -194470,7 +196397,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule_resolve_duty_staff_role_id", @@ -194481,7 +196408,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L304", + "source_location": "L376", "weight": 1.0, "source": "tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "target": "app_services_duty_schedule_resolve_duty_staff_role_id", @@ -194492,7 +196419,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L492", + "source_location": "L630", "weight": 1.0, "source": "app_services_duty_schedule_list_public_users", "target": "app_services_duty_schedule_list_duty_staff_users", @@ -194502,9 +196429,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L422", + "source_location": "L560", "weight": 1.0, - "source": "app_services_duty_schedule_rationale_422", + "source": "app_services_duty_schedule_rationale_560", "target": "app_services_duty_schedule_list_duty_staff_users", "confidence_score": 1.0 }, @@ -194513,7 +196440,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule_list_duty_staff_users", @@ -194524,7 +196451,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L312", + "source_location": "L384", "weight": 1.0, "source": "tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "target": "app_services_duty_schedule_list_duty_staff_users", @@ -194535,7 +196462,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L511", + "source_location": "L649", "weight": 1.0, "source": "app_services_duty_schedule_resolve_grab_user", "target": "app_services_duty_schedule_assert_user_is_duty_staff", @@ -194546,7 +196473,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule_assert_user_is_duty_staff", @@ -194557,7 +196484,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L333", + "source_location": "L405", "weight": 1.0, "source": "tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "target": "app_services_duty_schedule_assert_user_is_duty_staff", @@ -194568,7 +196495,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L532", + "source_location": "L670", "weight": 1.0, "source": "app_services_duty_schedule_get_public_page", "target": "app_services_duty_schedule_list_public_users", @@ -194579,7 +196506,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", - "source_location": "L552", + "source_location": "L690", "weight": 1.0, "source": "app_services_duty_schedule_grab", "target": "app_services_duty_schedule_resolve_grab_user", @@ -194590,7 +196517,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L20", + "source_location": "L21", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "app_services_duty_schedule_grab", @@ -194601,7 +196528,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L221", + "source_location": "L293", "weight": 1.0, "source": "tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "target": "app_services_duty_schedule_grab", @@ -194612,7 +196539,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L155", + "source_location": "L227", "weight": 1.0, "source": "tests_test_duty_schedule_test_grab_rejects_invalid_user", "target": "app_services_duty_schedule_grab", @@ -194623,7 +196550,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L378", + "source_location": "L450", "weight": 1.0, "source": "tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "target": "app_services_duty_schedule_grab", @@ -194634,7 +196561,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L126", + "source_location": "L198", "weight": 1.0, "source": "tests_test_duty_schedule_test_grab_rejects_when_closed", "target": "app_services_duty_schedule_grab", @@ -194645,7 +196572,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L108", + "source_location": "L180", "weight": 1.0, "source": "tests_test_duty_schedule_test_grab_rejects_when_full", "target": "app_services_duty_schedule_grab", @@ -195169,7 +197096,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L44", + "source_location": "L61", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_cert_row_complete", @@ -195179,7 +197106,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L99", + "source_location": "L116", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_collect_required_cert_errors", @@ -195189,7 +197116,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L60", + "source_location": "L77", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_find_cert_for_required", @@ -195199,7 +197126,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L124", + "source_location": "L141", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_get_required_personnel_cert_names", @@ -195209,7 +197136,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L35", + "source_location": "L37", + "weight": 1.0, + "source": "app_services_pl_cert_required_service", + "target": "app_services_pl_cert_required_service_is_huolala_trailer_no", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L52", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_match_required_cert_name", @@ -195219,7 +197156,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L80", + "source_location": "L97", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_missing_field_labels", @@ -195229,7 +197166,27 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L194", + "source_location": "L46", + "weight": 1.0, + "source": "app_services_pl_cert_required_service", + "target": "app_services_pl_cert_required_service_should_require_trailer_certs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L41", + "weight": 1.0, + "source": "app_services_pl_cert_required_service", + "target": "app_services_pl_cert_required_service_should_show_trailer_cert_slots", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L211", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", @@ -195239,7 +197196,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L146", + "source_location": "L163", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_personnel_required_certs", @@ -195249,7 +197206,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L135", + "source_location": "L152", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_personnel_type_role_compat", @@ -195259,7 +197216,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L170", + "source_location": "L187", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", @@ -195269,7 +197226,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L218", + "source_location": "L221", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", @@ -195279,7 +197236,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L252", + "source_location": "L255", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", @@ -195289,7 +197246,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L291", + "source_location": "L294", "weight": 1.0, "source": "app_services_pl_cert_required_service", "target": "app_services_pl_cert_required_service_validate_vehicle_save_certs", @@ -195328,6 +197285,17 @@ "target": "app_services_pl_cert_required_service", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L7", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "app_services_pl_cert_required_service", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -195344,7 +197312,106 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L52", + "source_location": "L43", + "weight": 1.0, + "source": "app_services_pl_cert_required_service_should_show_trailer_cert_slots", + "target": "app_services_pl_cert_required_service_is_huolala_trailer_no", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L7", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "app_services_pl_cert_required_service_is_huolala_trailer_no", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L24", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", + "target": "app_services_pl_cert_required_service_is_huolala_trailer_no", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L47", + "weight": 1.0, + "source": "app_services_pl_cert_required_service_should_require_trailer_certs", + "target": "app_services_pl_cert_required_service_should_show_trailer_cert_slots", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L7", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "app_services_pl_cert_required_service_should_show_trailer_cert_slots", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L27", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", + "target": "app_services_pl_cert_required_service_should_show_trailer_cert_slots", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L198", + "weight": 1.0, + "source": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", + "target": "app_services_pl_cert_required_service_should_require_trailer_certs", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L7", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "app_services_pl_cert_required_service_should_require_trailer_certs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L29", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", + "target": "app_services_pl_cert_required_service_should_require_trailer_certs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L69", "weight": 1.0, "source": "app_services_pl_cert_required_service_cert_row_complete", "target": "app_services_pl_cert_required_service_match_required_cert_name", @@ -195355,7 +197422,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L75", + "source_location": "L92", "weight": 1.0, "source": "app_services_pl_cert_required_service_find_cert_for_required", "target": "app_services_pl_cert_required_service_match_required_cert_name", @@ -195366,7 +197433,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L91", + "source_location": "L108", "weight": 1.0, "source": "app_services_pl_cert_required_service_missing_field_labels", "target": "app_services_pl_cert_required_service_match_required_cert_name", @@ -195410,7 +197477,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L114", + "source_location": "L131", "weight": 1.0, "source": "app_services_pl_cert_required_service_collect_required_cert_errors", "target": "app_services_pl_cert_required_service_find_cert_for_required", @@ -195421,7 +197488,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L117", + "source_location": "L134", "weight": 1.0, "source": "app_services_pl_cert_required_service_collect_required_cert_errors", "target": "app_services_pl_cert_required_service_missing_field_labels", @@ -195432,18 +197499,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L201", - "weight": 1.0, - "source": "app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", - "target": "app_services_pl_cert_required_service_collect_required_cert_errors", - "confidence_score": 1.0 - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L161", + "source_location": "L178", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_personnel_required_certs", "target": "app_services_pl_cert_required_service_collect_required_cert_errors", @@ -195454,7 +197510,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L177", + "source_location": "L194", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "target": "app_services_pl_cert_required_service_collect_required_cert_errors", @@ -195465,7 +197521,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L280", + "source_location": "L283", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "app_services_pl_cert_required_service_collect_required_cert_errors", @@ -195531,7 +197587,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L160", + "source_location": "L177", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_personnel_required_certs", "target": "app_services_pl_cert_required_service_get_required_personnel_cert_names", @@ -195608,7 +197664,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L272", + "source_location": "L275", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "app_services_pl_cert_required_service_validate_personnel_type_role_compat", @@ -195652,18 +197708,61 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L302", + "source_location": "L305", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "confidence_score": 1.0 }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L7", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L35", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", + "target": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L43", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", + "target": "app_services_pl_cert_required_service_validate_self_vehicle_required_certs", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_cert_required_service.py", + "source_location": "L216", + "weight": 1.0, + "source": "app_services_pl_cert_required_service_rationale_216", + "target": "app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", + "confidence_score": 1.0 + }, { "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L218", + "source_location": "L221", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "target": "app_services_pl_cert_required_service_py_session", @@ -195674,7 +197773,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L304", + "source_location": "L307", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", @@ -195685,7 +197784,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L252", + "source_location": "L255", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "app_services_pl_cert_required_service_py_session", @@ -195696,7 +197795,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L291", + "source_location": "L294", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "app_services_pl_cert_required_service_py_session", @@ -195707,7 +197806,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L273", + "source_location": "L276", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "app_services_pl_cert_service_list_owner_certs", @@ -195718,7 +197817,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", - "source_location": "L308", + "source_location": "L311", "weight": 1.0, "source": "app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", @@ -196060,7 +198159,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L55", + "source_location": "L57", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "target": "app_services_pl_cert_service_scan_cert_expiry", @@ -196140,6 +198239,17 @@ "target": "app_services_pl_data_scope", "confidence_score": 1.0 }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L12", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_data_scope", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -196233,7 +198343,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L63", + "source_location": "L65", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "target": "app_services_pl_data_scope_apply_pl_scope", @@ -196244,7 +198354,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L137", + "source_location": "L152", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_freight_disburse_pending", "target": "app_services_pl_data_scope_apply_pl_scope", @@ -196255,7 +198365,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L50", + "source_location": "L52", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_pending_applies", "target": "app_services_pl_data_scope_apply_pl_scope", @@ -196266,7 +198376,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L127", + "source_location": "L129", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_plan_archive_pending", "target": "app_services_pl_data_scope_apply_pl_scope", @@ -196277,12 +198387,45 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L94", + "source_location": "L96", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_plan_cert_pending", "target": "app_services_pl_data_scope_apply_pl_scope", "confidence_score": 1.0 }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L142", + "weight": 1.0, + "source": "app_services_pl_menu_badge_service_count_plan_contract_gaps", + "target": "app_services_pl_data_scope_apply_pl_scope", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L12", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_data_scope_apply_pl_scope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L161", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_data_scope_apply_pl_scope", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", @@ -199522,7 +201665,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L81", + "source_location": "L83", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_freight_approval_pending", "target": "app_services_pl_freight_settlement_service_can_user_approve_settlement", @@ -199684,7 +201827,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L5", + "source_location": "L13", "weight": 1.0, "source": "app_services_pl_plan_contract_gap", "target": "app_services_pl_internal_customer", @@ -199695,7 +201838,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L1", + "source_location": "L3", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "app_services_pl_internal_customer", @@ -199706,7 +201849,7 @@ "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L5", + "source_location": "L13", "weight": 1.0, "source": "app_services_pl_plan_contract_gap", "target": "app_services_pl_internal_customer_is_internal_customer_name", @@ -199717,7 +201860,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L16", + "source_location": "L35", "weight": 1.0, "source": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", "target": "app_services_pl_internal_customer_is_internal_customer_name", @@ -199728,7 +201871,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L24", + "source_location": "L43", "weight": 1.0, "source": "app_services_pl_plan_contract_gap_side_is_exempt", "target": "app_services_pl_internal_customer_is_internal_customer_name", @@ -201033,7 +203176,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L141", + "source_location": "L156", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_build_menu_badge_counts", @@ -201043,7 +203186,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L54", + "source_location": "L56", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_count_document_reminder_expired_pending", @@ -201053,7 +203196,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L67", + "source_location": "L69", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_count_freight_approval_pending", @@ -201063,7 +203206,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L131", + "source_location": "L146", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_count_freight_disburse_pending", @@ -201073,7 +203216,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L44", + "source_location": "L46", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_count_pending_applies", @@ -201083,7 +203226,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L120", + "source_location": "L122", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_count_plan_archive_pending", @@ -201093,12 +203236,33 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L86", + "source_location": "L88", "weight": 1.0, "source": "app_services_pl_menu_badge_service", "target": "app_services_pl_menu_badge_service_count_plan_cert_pending", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L133", + "weight": 1.0, + "source": "app_services_pl_menu_badge_service", + "target": "app_services_pl_menu_badge_service_count_plan_contract_gaps", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L134", + "weight": 1.0, + "source": "app_services_pl_menu_badge_service", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", @@ -201126,7 +203290,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L162", + "source_location": "L177", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_count_pending_applies", @@ -201137,7 +203301,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L44", + "source_location": "L46", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_pending_applies", "target": "app_services_pl_menu_badge_service_py_session", @@ -201148,7 +203312,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L141", + "source_location": "L156", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_py_session", @@ -201159,7 +203323,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L54", + "source_location": "L56", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "target": "app_services_pl_menu_badge_service_py_session", @@ -201170,7 +203334,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L67", + "source_location": "L69", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_freight_approval_pending", "target": "app_services_pl_menu_badge_service_py_session", @@ -201181,7 +203345,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L131", + "source_location": "L146", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_freight_disburse_pending", "target": "app_services_pl_menu_badge_service_py_session", @@ -201192,7 +203356,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L120", + "source_location": "L122", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_plan_archive_pending", "target": "app_services_pl_menu_badge_service_py_session", @@ -201203,18 +203367,29 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L86", + "source_location": "L88", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_plan_cert_pending", "target": "app_services_pl_menu_badge_service_py_session", "confidence_score": 1.0 }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L133", + "weight": 1.0, + "source": "app_services_pl_menu_badge_service_count_plan_contract_gaps", + "target": "app_services_pl_menu_badge_service_py_session", + "confidence_score": 1.0 + }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L156", + "source_location": "L171", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_count_document_reminder_expired_pending", @@ -201225,7 +203400,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L158", + "source_location": "L173", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_count_freight_approval_pending", @@ -201236,7 +203411,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L174", + "source_location": "L189", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_count_plan_cert_pending", @@ -201247,7 +203422,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L115", + "source_location": "L117", "weight": 1.0, "source": "app_services_pl_menu_badge_service_count_plan_cert_pending", "target": "app_services_pl_plan_service_plan_has_hazard_products", @@ -201258,7 +203433,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L176", + "source_location": "L191", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_count_plan_archive_pending", @@ -201269,7 +203444,29 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", - "source_location": "L160", + "source_location": "L193", + "weight": 1.0, + "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", + "target": "app_services_pl_menu_badge_service_count_plan_contract_gaps", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L140", + "weight": 1.0, + "source": "app_services_pl_menu_badge_service_count_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_menu_badge_service.py", + "source_location": "L175", "weight": 1.0, "source": "app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "app_services_pl_menu_badge_service_count_freight_disburse_pending", @@ -201745,7 +203942,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L222", + "source_location": "L229", "weight": 1.0, "source": "app_services_pl_paste_recognize_service", "target": "app_services_pl_paste_recognize_service_commit_paste_recognize", @@ -201848,7 +204045,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L230", + "source_location": "L237", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_services_pl_paste_recognize_service_conflict_map", @@ -201881,7 +204078,7 @@ "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L222", + "source_location": "L229", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_services_pl_paste_recognize_service_py_session", @@ -201980,7 +204177,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L246", + "source_location": "L253", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_services_pl_paste_recognize_service_resolve_personnel", @@ -201991,7 +204188,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L267", + "source_location": "L274", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_services_pl_paste_recognize_service_resolve_vehicle", @@ -202002,7 +204199,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", - "source_location": "L297", + "source_location": "L304", "weight": 1.0, "source": "app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "app_services_pl_personnel_service_save_vehicle_personnel", @@ -202287,7 +204484,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L8", + "source_location": "L88", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L27", "weight": 1.0, "source": "app_services_pl_plan_contract_gap", "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", @@ -202297,29 +204504,165 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", - "source_location": "L23", + "source_location": "L70", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_demander_gap_expr", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L141", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L120", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_load_products_by_plan_ids", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L83", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L46", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_side_contract_exists", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L42", "weight": 1.0, "source": "app_services_pl_plan_contract_gap", "target": "app_services_pl_plan_contract_gap_side_is_exempt", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L57", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_supplier_gap_expr", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L228", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L14", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_service", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L14", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_service_assert_contract_selectable_for_plan", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L14", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_service_load_plan_contracts_grouped", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L14", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_service_normalize_contract_links", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L14", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap", + "target": "app_services_pl_plan_service_replace_plan_contracts", + "confidence_score": 1.0 + }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L2", + "source_location": "L4", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "app_services_pl_plan_contract_gap", "confidence_score": 1.0 }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L95", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", + "confidence_score": 1.0 + }, { "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L2", + "source_location": "L4", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", @@ -202330,7 +204673,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L8", + "source_location": "L10", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", @@ -202341,7 +204684,7 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L28", + "source_location": "L30", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", @@ -202352,7 +204695,18 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L38", + "source_location": "L50", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", + "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L40", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", @@ -202363,12 +204717,285 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L18", + "source_location": "L20", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "target": "app_services_pl_plan_contract_gap_compute_contract_gap_sides", "confidence_score": 1.0 }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L112", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "target": "app_services_pl_plan_contract_gap_side_is_exempt", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L79", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_demander_gap_expr", + "target": "app_services_pl_plan_contract_gap_side_contract_exists", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L66", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_supplier_gap_expr", + "target": "app_services_pl_plan_contract_gap_side_contract_exists", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L168", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_supplier_gap_expr", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L85", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "target": "app_services_pl_plan_contract_gap_supplier_gap_expr", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L170", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_demander_gap_expr", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L85", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "target": "app_services_pl_plan_contract_gap_demander_gap_expr", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L159", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L84", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_rationale_84", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L4", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L66", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", + "target": "app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L218", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L284", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_contract_gap_build_plan_contract_gap_read", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L212", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_load_products_by_plan_ids", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L120", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_load_products_by_plan_ids", + "target": "app_services_pl_plan_contract_gap_py_session", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L283", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_contract_gap_load_products_by_plan_ids", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L141", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L228", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_contract_gap_py_session", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L141", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_contract_gap_py_date", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L211", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_list_plan_contract_gaps", + "target": "app_services_pl_plan_service_load_plan_contracts_grouped", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L238", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_rationale_238", + "target": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L254", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_service_assert_contract_selectable_for_plan", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L244", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_service_load_plan_contracts_grouped", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L247", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_service_normalize_contract_links", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "app/services/pl_plan_contract_gap.py", + "source_location": "L270", + "weight": 1.0, + "source": "app_services_pl_plan_contract_gap_update_plan_side_contracts", + "target": "app_services_pl_plan_service_replace_plan_contracts", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -223223,7 +225850,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L315", + "source_location": "L387", "weight": 1.0, "source": "tests_test_duty_schedule", "target": "tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", @@ -223233,40 +225860,30 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L158", + "source_location": "L63", "weight": 1.0, "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", + "target": "tests_test_duty_schedule_test_build_dict_value_from_label", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L129", + "source_location": "L83", "weight": 1.0, "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_grab_rejects_invalid_user", + "target": "tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L336", + "source_location": "L69", "weight": 1.0, "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_grab_rejects_non_duty_staff", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L111", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_grab_rejects_when_closed", + "target": "tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "confidence_score": 1.0 }, { @@ -223276,87 +225893,17 @@ "source_location": "L49", "weight": 1.0, "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_grab_rejects_when_full", + "target": "tests_test_duty_schedule_test_format_time_label_cross_day", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L307", + "source_location": "L53", "weight": 1.0, "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L35", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_normalize_person_name_empty", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L31", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_normalize_person_name_ok", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L40", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_normalize_person_name_too_long", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L298", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L381", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L469", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", - "confidence_score": 1.0 - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/test_duty_schedule.py", - "source_location": "L224", - "weight": 1.0, - "source": "tests_test_duty_schedule", - "target": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", + "target": "tests_test_duty_schedule_test_format_time_label_empty", "confidence_score": 1.0 }, { @@ -223366,16 +225913,176 @@ "source_location": "L45", "weight": 1.0, "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_format_time_label_same_day", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L230", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L201", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_grab_rejects_invalid_user", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L408", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_grab_rejects_non_duty_staff", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L183", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_grab_rejects_when_closed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L121", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_grab_rejects_when_full", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L379", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L107", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_normalize_person_name_empty", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L103", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_normalize_person_name_ok", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L112", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_normalize_person_name_too_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L38", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_parse_hhmm", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L370", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L453", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L541", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L296", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L117", + "weight": 1.0, + "source": "tests_test_duty_schedule", "target": "tests_test_duty_schedule_test_shift_labels", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_duty_schedule.py", + "source_location": "L57", + "weight": 1.0, + "source": "tests_test_duty_schedule", + "target": "tests_test_duty_schedule_test_work_plans_join_split", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L225", + "source_location": "L297", "weight": 1.0, - "source": "tests_test_duty_schedule_rationale_225", + "source": "tests_test_duty_schedule_rationale_297", "target": "tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "confidence_score": 1.0 }, @@ -223383,9 +226090,9 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", - "source_location": "L382", + "source_location": "L454", "weight": 1.0, - "source": "tests_test_duty_schedule_rationale_382", + "source": "tests_test_duty_schedule_rationale_454", "target": "tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "confidence_score": 1.0 }, @@ -224178,7 +226885,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L7", + "source_location": "L59", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap", + "target": "tests_test_pl_plan_contract_gap_compile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L9", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", @@ -224188,7 +226905,7 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L27", + "source_location": "L29", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "tests_test_pl_plan_contract_gap_test_both_internal_no_gap", @@ -224198,7 +226915,17 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L37", + "source_location": "L49", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap", + "target": "tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L39", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", @@ -224208,12 +226935,33 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", - "source_location": "L17", + "source_location": "L19", "weight": 1.0, "source": "tests_test_pl_plan_contract_gap", "target": "tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L65", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap", + "target": "tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_plan_contract_gap.py", + "source_location": "L67", + "weight": 1.0, + "source": "tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", + "target": "tests_test_pl_plan_contract_gap_compile", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -224384,6 +227132,78 @@ "target": "tests_test_pl_public_link_archived", "confidence_score": 1.0 }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L15", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "tests_test_pl_trailer_cert_rules_complete_self_head_certs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L23", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L34", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L41", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules", + "target": "tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L1", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_rationale_1", + "target": "tests_test_pl_trailer_cert_rules", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L36", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", + "target": "tests_test_pl_trailer_cert_rules_complete_self_head_certs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pl_trailer_cert_rules.py", + "source_location": "L44", + "weight": 1.0, + "source": "tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", + "target": "tests_test_pl_trailer_cert_rules_complete_self_head_certs", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -224756,5 +227576,5 @@ } ], "hyperedges": [], - "built_at_commit": "a79e8a3e1251df853028f66c4316e54fe3192236" + "built_at_commit": "80545263a0958073192591151fd6dbdad309c077" } \ No newline at end of file diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 75f7368f6..506d5c4c0 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - backend (2026-08-20) ## Corpus Check -- 334 files · ~219,354 words +- 332 files · ~221,008 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 4540 nodes · 16819 edges · 169 communities (153 shown, 16 thin omitted) -- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 752 edges (avg confidence: 0.62) +- 4579 nodes · 16988 edges · 173 communities (157 shown, 16 thin omitted) +- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 776 edges (avg confidence: 0.62) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `211156a9` +- Built from commit: `cd0491e6` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -105,32 +105,40 @@ - [[_COMMUNITY_Community 87|Community 87]] - [[_COMMUNITY_CrmProduct|CrmProduct]] - [[_COMMUNITY_pl_ocr_service.py|pl_ocr_service.py]] -- [[_COMMUNITY_SysApiRequestLog|SysApiRequestLog]] -- [[_COMMUNITY_pl_vehicle_recharge_service.py|pl_vehicle_recharge_service.py]] +- [[_COMMUNITY_WechatMessageService|WechatMessageService]] +- [[_COMMUNITY_opportunity_product.py|opportunity_product.py]] - [[_COMMUNITY_Community 92|Community 92]] -- [[_COMMUNITY_list_products|list_products]] +- [[_COMMUNITY_api_request_log_middleware.py|api_request_log_middleware.py]] - [[_COMMUNITY_assert_contract_editable_for_update|assert_contract_editable_for_update]] -- [[_COMMUNITY_Community 95|Community 95]] -- [[_COMMUNITY___init__.py|__init__.py]] +- [[_COMMUNITY_test_pl_public_link_archived.py|test_pl_public_link_archived.py]] +- [[_COMMUNITY_opportunity_follow.py|opportunity_follow.py]] - [[_COMMUNITY__ensure_subpack_slip_no|_ensure_subpack_slip_no]] - [[_COMMUNITY_LocalStorage|LocalStorage]] - [[_COMMUNITY_QiniuStorage|QiniuStorage]] - [[_COMMUNITY_price_letter_detail|price_letter_detail]] -- [[_COMMUNITY_list_product_options|list_product_options]] -- [[_COMMUNITY_dept.py|dept.py]] +- [[_COMMUNITY_tenant.py|tenant.py]] +- [[_COMMUNITY_crm_supplier_hazard.py|crm_supplier_hazard.py]] - [[_COMMUNITY_pl_internal_customer.py|pl_internal_customer.py]] - [[_COMMUNITY_apply_crm_create_by_scope|apply_crm_create_by_scope]] +- [[_COMMUNITY_pool_customer_assign|pool_customer_assign]] +- [[_COMMUNITY_site.py|site.py]] - [[_COMMUNITY_apply_pl_scope|apply_pl_scope]] +- [[_COMMUNITY_statistics.py|statistics.py]] - [[_COMMUNITY_Community 109|Community 109]] +- [[_COMMUNITY_plan_has_incomplete_hazard_cert_exists|plan_has_incomplete_hazard_cert_exists]] - [[_COMMUNITY_Community 111|Community 111]] +- [[_COMMUNITY_.to_tenant_user_dict|.to_tenant_user_dict]] - [[_COMMUNITY_quote_share_log.py|quote_share_log.py]] - [[_COMMUNITY_db_models.py|db_models.py]] - [[_COMMUNITY_site.py|site.py]] - [[_COMMUNITY_Community 116|Community 116]] +- [[_COMMUNITY_get_web_auth_menu_codes|get_web_auth_menu_codes]] - [[_COMMUNITY_Community 118|Community 118]] - [[_COMMUNITY_Community 119|Community 119]] +- [[_COMMUNITY_sqlalchemy_exception_handler|sqlalchemy_exception_handler]] +- [[_COMMUNITY_Session|Session]] - [[_COMMUNITY_Community 122|Community 122]] -- [[_COMMUNITY_Community 125|Community 125]] +- [[_COMMUNITY_list_product_options|list_product_options]] - [[_COMMUNITY_customer_pool.py|customer_pool.py]] - [[_COMMUNITY_BaseStorage|BaseStorage]] - [[_COMMUNITY_Community 134|Community 134]] @@ -145,16 +153,12 @@ - [[_COMMUNITY_Community 151|Community 151]] - [[_COMMUNITY_response.py|response.py]] - [[_COMMUNITY_customer_update|customer_update]] -- [[_COMMUNITY_register_local_callback|register_local_callback]] - [[_COMMUNITY_.to_tenant_user_dict|.to_tenant_user_dict]] - [[_COMMUNITY_get_client_ip|get_client_ip]] - [[_COMMUNITY_codeblock1 (iflytekshanxia2.0backend)|code:block1 (/iflytek/shanxia2.0/backend)]] - [[_COMMUNITY_test_quote_approver_setting.py|test_quote_approver_setting.py]] -- [[_COMMUNITY_minio_url.py|minio_url.py]] - [[_COMMUNITY_resolve_create_time_bounds|resolve_create_time_bounds]] -- [[_COMMUNITY_register_local_callback|register_local_callback]] - [[_COMMUNITY_test_pl_vehicle_personnel_photo_schema.py|test_pl_vehicle_personnel_photo_schema.py]] -- [[_COMMUNITY_statistics.py|statistics.py]] - [[_COMMUNITY_get_client_ip|get_client_ip]] - [[_COMMUNITY_crm_quote_pdf.py|crm_quote_pdf.py]] - [[_COMMUNITY_shanxia2.0 后端骨架(FastAPI)|shanxia2.0 后端骨架(FastAPI)]] @@ -176,18 +180,20 @@ - [[_COMMUNITY_PlanResourceSnapshotMixin|PlanResourceSnapshotMixin]] ## God Nodes (most connected - your core abstractions) -1. `BaseModel` - 455 edges -2. `get_tenant_no()` - 351 edges -3. `success_response()` - 268 edges -4. `DbUserContext` - 256 edges -5. `error_response()` - 247 edges -6. `generate_uuid()` - 194 edges +1. `BaseModel` - 456 edges +2. `get_tenant_no()` - 352 edges +3. `success_response()` - 270 edges +4. `DbUserContext` - 257 edges +5. `error_response()` - 249 edges +6. `generate_uuid()` - 196 edges 7. `BxUserContext` - 188 edges 8. `crm_user_info()` - 137 edges 9. `assert_row_deletable_by_creator()` - 83 edges 10. `ApiResponse` - 80 edges ## Surprising Connections (you probably didn't know these) +- `BackfillRule` --uses--> `Settings` [INFERRED] + scripts/migrate_crm_sys_oss.py → app/core/config.py - `MigrationStats` --uses--> `Settings` [INFERRED] scripts/migrate_bx_data.py → app/core/config.py - `StepStats` --uses--> `Settings` [INFERRED] @@ -196,97 +202,95 @@ scripts/migrate_crm_clue.py → app/core/config.py - `StepStats` --uses--> `Settings` [INFERRED] scripts/migrate_crm_clue.py → app/core/config.py -- `MigrationStats` --uses--> `Settings` [INFERRED] - scripts/migrate_crm_contract.py → app/core/config.py ## Import Cycles - None detected. -## Communities (169 total, 16 thin omitted) +## Communities (173 total, 16 thin omitted) ### Community 0 - "Community 0" -Cohesion: 0.16 -Nodes (32): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+24 more) +Cohesion: 0.27 +Nodes (25): BrandOption, BrandQtyItem, PlanDriverFeedbackProductItem, PlanProductCertItem, PlanResourceSnapshotMixin, ApprovalRecordRead, ApprovalRequest, ApprovalSubmit (+17 more) ### Community 1 - "Community 1" Cohesion: 0.08 -Nodes (38): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, 运营端角色守卫:admin / super_admin 可访问。, require_admin_or_super_admin(), ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody (+30 more) +Nodes (36): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody, ContractBatchAssignBody, ContractBatchSubmitBody (+28 more) ### Community 2 - "Community 2" -Cohesion: 0.13 -Nodes (37): _apply_inventory_product_update(), _apply_inventory_update(), _base_query(), create_inventory(), create_link_for_plan(), delete_inventory(), _generate_batch_no(), _get_inventory() (+29 more) +Cohesion: 0.24 +Nodes (18): _build_public_page(), _build_site_product_read(), _format_file_size(), get_public_site(), _get_site_link_by_token(), _parse_feedback_images(), Session, UploadFile (+10 more) ### Community 3 - "Community 3" -Cohesion: 0.09 -Nodes (98): attachment_download_url(), attachment_preview_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite() (+90 more) +Cohesion: 0.08 +Nodes (103): attachment_download_url(), attachment_preview_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite() (+95 more) ### Community 4 - "Community 4" -Cohesion: 0.09 -Nodes (76): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+68 more) +Cohesion: 0.12 +Nodes (61): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+53 more) ### Community 5 - "Community 5" -Cohesion: 0.05 -Nodes (120): archive_plan(), cancel_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan(), create_plan_full(), delete_plan() (+112 more) +Cohesion: 0.04 +Nodes (141): archive_plan(), cancel_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan(), create_plan_full(), delete_plan() (+133 more) ### Community 6 - "Community 6" Cohesion: 0.18 -Nodes (32): assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer(), create_customer(), deal_customer(), _enrich_user_names(), _ensure_customer_in_scope() (+24 more) +Nodes (33): assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer(), create_customer(), deal_customer(), _enrich_user_names(), _ensure_customer_in_scope() (+25 more) ### Community 7 - "Community 7" Cohesion: 0.04 -Nodes (196): clue_assign(), clue_check_convert(), clue_check_duplicate(), clue_convert(), clue_create(), clue_delete(), clue_detail(), clue_export() (+188 more) +Nodes (205): clue_assign(), clue_check_convert(), clue_check_duplicate(), clue_convert(), clue_create(), clue_delete(), clue_detail(), clue_export() (+197 more) ### Community 8 - "Community 8" Cohesion: 0.10 -Nodes (67): register_quote_routes(), accept_quote(), assert_quote_editable_for_update(), _build_quote_filters(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value() (+59 more) +Nodes (54): assert_quote_editable_for_update(), _build_quote_filters(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value(), _enrich_contact_fields(), _enrich_supplier_name() (+46 more) ### Community 9 - "Community 9" -Cohesion: 0.09 -Nodes (53): download_reimburse_import_template(), clue_import_template(), customer_import_template(), product_import_template(), build_annotated_result_bytes(), build_applicant_label(), build_expense_path_labels(), build_import_template_bytes() (+45 more) +Cohesion: 0.10 +Nodes (49): download_reimburse_import_template(), build_annotated_result_bytes(), build_applicant_label(), build_expense_path_labels(), build_import_template_bytes(), cell_str(), _ids_visible_in_web_tree(), import_reimburse_workbook() (+41 more) ### Community 10 - "Community 10" -Cohesion: 0.18 -Nodes (31): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), legacy_parent_id(), load_oss_id_to_url(), load_runtime_settings() (+23 more) +Cohesion: 0.08 +Nodes (31): 报销模块认证适配:门户 JWT 用户 → bx 业务上下文。, 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 运营端角色守卫:admin / super_admin 可访问。, require_admin_or_super_admin(), BxAdvanceApply, BxAdvanceApproval, AdvanceService, Any (+23 more) ### Community 11 - "Community 11" -Cohesion: 0.10 -Nodes (55): cancel_apply(), create_apply(), create_disburse(), delete_applies(), delete_disburses(), get_apply(), get_disburse(), list_applies() (+47 more) +Cohesion: 0.15 +Nodes (40): PlVehicleUreaApply, PlVehicleUreaDisburse, 车辆尿素申请 pl_vehicle_urea_apply, 车辆尿素发放登记 pl_vehicle_urea_disburse, Decimal, VehicleUreaApplyCreate, VehicleUreaApplyRead, VehicleUreaApplyUpdate (+32 more) ### Community 12 - "Community 12" Cohesion: 0.05 -Nodes (70): contact_delete(), customer_create(), customer_update(), customer_name_exists(), BaseModel, AttachmentUploadResponse, ChangePasswordRequest, Config (+62 more) +Nodes (68): customer_create(), customer_update(), customer_name_exists(), BaseModel, AttachmentUploadResponse, ChangePasswordRequest, Config, LoginRequest (+60 more) ### Community 13 - "Community 13" Cohesion: 0.20 Nodes (13): create_expense_item(), delete_expense_item(), get_expense_item(), get_expense_item_tree(), Session, update_expense_item(), BxExpenseItem, _coerce_id() (+5 more) ### Community 14 - "Community 14" -Cohesion: 0.17 -Nodes (19): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), Session, save_workflow_nodes(), update_workflow() (+11 more) +Cohesion: 0.20 +Nodes (15): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+7 more) ### Community 15 - "Community 15" -Cohesion: 0.11 -Nodes (17): BxReimburseApply, BxReimburseApproval, BxReimburseDetail, BxReimburseInvoice, BxReimburseOffset, 报销单勾选的发票附件(同一发票可勾选多个附件,各占一条)。, ReimburseApplyOut, ReimburseInvoiceBriefOut (+9 more) +Cohesion: 0.09 +Nodes (45): approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse(), delete_reimburse(), get_approval_history(), get_approvals(), get_generated_title() (+37 more) ### Community 16 - "Community 16" -Cohesion: 0.09 -Nodes (60): cancel_apply(), create_apply(), create_record(), delete_applies(), delete_records(), get_apply(), get_record(), list_applies() (+52 more) +Cohesion: 0.05 +Nodes (107): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+99 more) ### Community 17 - "Community 17" -Cohesion: 0.12 -Nodes (29): PlInventoryTransaction, PlPlanProductBrandQty, 计划产品归档品牌数量 pl_plan_product_brand_qty, 库存流水表 pl_inventory_transaction, load_brand_qtys_by_plan_product_ids(), persist_plan_product_brand_qtys(), Any, Decimal (+21 more) +Cohesion: 0.14 +Nodes (25): filter_current_cycle_approvals(), 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, 审批进度仅展示当前轮次;完整历史由 get_approval_history 返回。, allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title(), is_auto_reimburse_title() (+17 more) ### Community 18 - "Community 18" -Cohesion: 0.09 -Nodes (44): advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _fill_offset_amounts(), get_advance() (+36 more) +Cohesion: 0.17 +Nodes (30): advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _fill_offset_amounts(), get_advance() (+22 more) ### Community 19 - "Community 19" -Cohesion: 0.07 -Nodes (69): bx_health(), 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, advance_issue_stats(), batch_offset(), export_advance_issues(), issue_advance(), list_advance_issues() (+61 more) +Cohesion: 0.10 +Nodes (31): advance_issue_stats(), batch_offset(), export_advance_issues(), issue_advance(), list_advance_issues(), list_advance_offset_records(), list_pending_payments(), list_processed_payments() (+23 more) ### Community 20 - "Community 20" -Cohesion: 0.11 -Nodes (43): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), contract_row_to_dict(), download_contract_pdf(), _ensure_contract_in_scope(), export_contracts(), finish_contract() (+35 more) +Cohesion: 0.23 +Nodes (18): register_quote_routes(), 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), accept_quote(), generate_pdf(), generate_share(), _get_quote_in_scope(), get_template() (+10 more) ### Community 21 - "Community 21" Cohesion: 0.10 @@ -296,77 +300,73 @@ Nodes (53): _alias_row_to_dict(), _assert_brand_deletable(), barcode_exists(), _ Cohesion: 0.08 Nodes (28): parse_admin_request_json(), Any, Request, 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, ApiCryptoError, _b64url_decode(), _b64url_encode() (+20 more) -### Community 23 - "Community 23" -Cohesion: 0.15 -Nodes (5): LocalStorage, process_image_content(), Path, 带下载文件名的访问 URL;默认实现为普通访问地址。, 处理图片内容,如果是 HEIC 格式则转换为 JPEG - ### Community 24 - "Community 24" -Cohesion: 0.09 -Nodes (68): _apply_plan_product_update(), _apply_plan_update(), AutoGenerateMonthlyResult, _base_query(), create_plan(), delete_plan(), _generate_plan_no(), get_plan() (+60 more) +Cohesion: 0.06 +Nodes (111): 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。, _apply_inventory_product_update(), _apply_inventory_update(), _base_query(), create_inventory(), create_link_for_plan(), delete_inventory(), _generate_batch_no() (+103 more) ### Community 25 - "Community 25" -Cohesion: 0.18 -Nodes (29): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+21 more) +Cohesion: 0.26 +Nodes (12): list_share_logs(), _parse_user_agent(), Any, Session, CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, Java: statisticsVisits, 简易 User-Agent 解析(替代 Hutool UserAgentUtil), Java: queryLogsByQuoteId (+4 more) ### Community 26 - "Community 26" -Cohesion: 0.08 -Nodes (68): day_detail(), delete_assignment(), duty_user_options(), _enrich_assign_names(), month_summary(), Session, 指定用户时补全 personName(用 nick_name)。, 值班可安排人员:仅「值班人员」角色下的启用用户。 (+60 more) +Cohesion: 0.06 +Nodes (89): day_detail(), delete_assignment(), duty_user_options(), _enrich_assign_names(), ensure_duty_dict(), month_summary(), Session, 指定用户时补全 personName(用 nick_name)。 (+81 more) ### Community 27 - "Community 27" -Cohesion: 0.10 -Nodes (35): CRM 报价单 API 路由 — 挂接到 crm.router, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), total_pages(), QuoteApproverSettingSaveBody, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody (+27 more) +Cohesion: 0.11 +Nodes (32): CRM 报价单 API 路由 — 挂接到 crm.router, QuoteApproverSettingSaveBody, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody, QuoteApprovalWithdrawBody, QuoteCreateBody (+24 more) ### Community 28 - "Community 28" -Cohesion: 0.05 -Nodes (98): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), _generate_settlement_no(), get_settlement(), get_settlement_approval_flow() (+90 more) +Cohesion: 0.11 +Nodes (55): PlFreightSettlement, PlFreightSettlementApproval, PlFreightSettlementTransport, 运费结算表 pl_freight_settlement, 运费结算审批 pl_freight_settlement_approval, 结算单-运输关联表 pl_freight_settlement_transport, _advance_after_approval(), _approval_to_dict() (+47 more) ### Community 29 - "Community 29" -Cohesion: 0.11 -Nodes (46): _apply_contract_entity_fields(), _build_contract_filters(), _build_contract_name_from_parties(), _build_customer_address(), _calc_amount_with_tax(), contract_no_exists(), _contract_period_key(), create_contract() (+38 more) +Cohesion: 0.10 +Nodes (53): _apply_contract_entity_fields(), _build_contract_filters(), _build_contract_name_from_parties(), _build_customer_address(), _calc_amount_with_tax(), contract_no_exists(), _contract_period_key(), contract_row_to_dict() (+45 more) ### Community 30 - "Community 30" Cohesion: 0.16 Nodes (26): clear_target_categories(), compute_level(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+18 more) ### Community 31 - "Community 31" -Cohesion: 0.17 -Nodes (11): pool_customer_assign(), pool_customer_claim(), pool_customer_list(), pool_record_detail(), pool_record_list(), PoolAssignBody, PoolClaimBody, PoolCustomerListBody (+3 more) +Cohesion: 0.05 +Nodes (88): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), _generate_settlement_no(), get_settlement(), get_settlement_approval_flow() (+80 more) ### Community 32 - "Community 32" -Cohesion: 0.22 -Nodes (17): _apply_list_filters(), create_supplier_info(), get_supplier_info(), list_all_supplier_info(), list_supplier_info(), Any, Session, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java (+9 more) +Cohesion: 0.36 +Nodes (15): create_opportunity_follow(), _ensure_parent_opportunity(), get_opportunity_follow(), list_follows_by_opportunity(), list_opportunity_follows(), _parse_optional_datetime(), Any, datetime (+7 more) ### Community 33 - "Community 33" -Cohesion: 0.10 -Nodes (32): ApiRequestLogMiddleware, _claims_from_auth(), _format_body_bytes(), _persist_log(), Any, Request, 统一记录 API 请求/响应出入参的中间件, _redact_obj() (+24 more) +Cohesion: 0.28 +Nodes (17): create_contact(), get_contact(), list_contacts(), list_contacts_by_customer(), _parse_optional_date(), Any, date, Session (+9 more) ### Community 34 - "Community 34" -Cohesion: 0.16 -Nodes (15): ApiRequestLogCRUD, Session, list_ethnics(), Any, Session, 民族码表 CRUD(全局 sys_ethnic), _row_to_dict(), 数据模型(与 docs/sql/shanxia2.0.sql 全库导出基线对齐的核心系统表) (+7 more) +Cohesion: 0.33 +Nodes (11): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+3 more) ### Community 35 - "Community 35" Cohesion: 0.18 Nodes (36): clear_portal_workflow(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_bx_user_mapping(), load_runtime_settings() (+28 more) ### Community 36 - "Community 36" -Cohesion: 0.14 -Nodes (29): 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password(), change_password(), create_user(), get_user(), get_user_with_relations(), _hash_password(), list_post_ids_for_user() (+21 more) +Cohesion: 0.15 +Nodes (27): 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password(), change_password(), create_user(), get_user(), get_user_with_relations(), _hash_password(), list_post_ids_for_user() (+19 more) ### Community 37 - "Community 37" Cohesion: 0.20 Nodes (24): count_source_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+16 more) ### Community 38 - "Community 38" -Cohesion: 0.08 -Nodes (25): Config, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), Any, 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。, Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。 (+17 more) +Cohesion: 0.22 +Nodes (10): Config, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), Any, 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。, Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。 (+2 more) ### Community 39 - "Community 39" Cohesion: 0.22 Nodes (28): assign_clues(), check_convert(), check_duplicate_clue(), convert_clue(), create_clue(), _enrich_user_names(), _ensure_clue_in_scope(), get_clue() (+20 more) ### Community 40 - "Community 40" -Cohesion: 0.16 -Nodes (33): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), _enrich_change_rows(), execute_change(), export_contract_changes(), export_contract_templates() (+25 more) +Cohesion: 0.15 +Nodes (35): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), create_contract_template(), _enrich_change_rows(), execute_change(), export_contract_changes() (+27 more) ### Community 41 - "Community 41" Cohesion: 0.14 @@ -377,100 +377,100 @@ Cohesion: 0.19 Nodes (32): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+24 more) ### Community 43 - "Community 43" -Cohesion: 0.09 -Nodes (34): create_invoice(), delete_invoice(), get_mine_wallet_summary(), list_invoice_ledgers(), list_invoice_wallets(), list_invoices(), Request, Session (+26 more) +Cohesion: 0.12 +Nodes (23): create_invoice(), Request, 一次上传一条发票:多文件挂同一档案,金额为总额,只写一条额度流水。 使用 request.form().getlist,兼容只传 1 个文件时 Fas, BxInvoice, BxInvoiceLedger, BxInvoiceWalletSummary, InvoiceService, InvoiceLedgerService (+15 more) ### Community 44 - "Community 44" -Cohesion: 0.17 -Nodes (20): operlog_detail(), operlog_list(), Session, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info(), business_type_from_path(), title_from_path(), _apply_oper_log_scope() (+12 more) +Cohesion: 0.21 +Nodes (17): apply_crm_create_by_scope(), _apply_list_filters(), create_supplier_info(), list_all_supplier_info(), list_supplier_info(), Any, Session, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java (+9 more) ### Community 45 - "Community 45" Cohesion: 0.11 -Nodes (17): category_add(), category_delete(), category_tree(), category_update(), product_delete(), product_update(), 删除产品(支持单条 body.id 和批量 body.ids), CategoryDeleteBody (+9 more) +Nodes (17): category_add(), category_delete(), category_tree(), category_update(), product_add(), product_delete(), 删除产品(支持单条 body.id 和批量 body.ids), CategoryDeleteBody (+9 more) ### Community 46 - "Community 46" -Cohesion: 0.18 -Nodes (30): Settings, BaseSettings, apply_biz_backfill(), BackfillRule, BizRef, build_biz_index(), count_target_rows(), derive_source_url() (+22 more) +Cohesion: 0.19 +Nodes (28): apply_biz_backfill(), BackfillRule, BizRef, build_biz_index(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows() (+20 more) ### Community 47 - "Community 47" -Cohesion: 0.11 -Nodes (31): filter_current_cycle_approvals(), 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, 审批进度仅展示当前轮次;完整历史由 get_approval_history 返回。, allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title(), is_auto_reimburse_title() (+23 more) +Cohesion: 0.13 +Nodes (32): PlPlanContract, 运输计划-合同关联(分侧多选) pl_plan_contract, PlanContractGapRead, PlanContractLink, PlanProductBase, PlanProductRead, is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免) (+24 more) ### Community 48 - "Community 48" Cohesion: 0.29 Nodes (12): build_name_pinyin_abbr(), normalize_name_pinyin_abbr(), 名称拼音首字母缩写:库内存小写,检索时大小写不敏感。, 保存时解析拼音字段。 - submitted_provided=True:用提交值(空则按 name 生成) - 否则:已有非空 existi, resolve_name_pinyin_abbr(), test_chinese_and_alnum(), test_empty_and_whitespace(), test_resolve_not_submitted_empty_existing_generates() (+4 more) ### Community 49 - "Community 49" -Cohesion: 0.32 -Nodes (13): _apply_create_range(), _base_query(), get_clue_level_statistics(), get_clue_overview_statistics(), get_clue_owner_statistics(), get_clue_source_statistics(), get_clue_trend_statistics(), Any (+5 more) +Cohesion: 0.49 +Nodes (10): clue_statistics_level(), _apply_create_range(), _base_query(), get_clue_level_statistics(), get_clue_overview_statistics(), get_clue_owner_statistics(), get_clue_source_statistics(), get_clue_trend_statistics() (+2 more) ### Community 50 - "Community 50" -Cohesion: 0.28 -Nodes (15): create_clue_follow(), delete_clue_follow(), get_clue_follow(), get_follow_statistics(), list_clue_follows(), Any, Session, 更新线索跟进记录,必要时同步线索 next_time (+7 more) +Cohesion: 0.14 +Nodes (32): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), download_contract_pdf(), _ensure_contract_in_scope(), finish_contract(), generate_template_no(), get_contract_detail() (+24 more) ### Community 51 - "Community 51" -Cohesion: 0.22 -Nodes (9): menu_badge_stats(), Session, RecognizeCertResult, _auto_fill_create_dept_id(), get_db(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID, 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), PlMenuBadgeStatsRead (+1 more) +Cohesion: 0.30 +Nodes (17): _address_to_read(), _build_address_query(), create_transport_address(), delete_transport_address(), _get_address(), get_transport_address(), list_all_transport_addresses(), list_transport_addresses() (+9 more) ### Community 52 - "Community 52" -Cohesion: 0.24 -Nodes (11): CRM 模块 Excel 导出列定义(字段与字典类型对齐 Java *Vo @ExcelDictFormat)。, _build_workbook(), DictLabelResolver, export_rows_to_xlsx_response(), ExportColumn, Any, Excel 导出工具:集中处理字典 code → label(对齐 Java ExcelDictConvert / ExcelDictPreloadConver, CRM 列表导出统一入口:表头 + 行数据 + 字典 label 转换 + 文件流响应。 (+3 more) +Cohesion: 0.20 +Nodes (13): CRM 模块 Excel 导出列定义(字段与字典类型对齐 Java *Vo @ExcelDictFormat)。, _build_workbook(), DictLabelResolver, export_rows_to_xlsx_response(), ExportColumn, Any, Session, Excel 导出工具:集中处理字典 code → label(对齐 Java ExcelDictConvert / ExcelDictPreloadConver (+5 more) ### Community 53 - "Community 53" -Cohesion: 0.21 -Nodes (13): CertRead, parse_resource_snapshot(), Any, 运输计划 - 安排运输时车辆/人员/证件资源快照 Schema, 从 ORM 文本列或 dict 解析快照。, SnapshotCertRead, SnapshotPersonnelRow, TransportResourceSnapshot (+5 more) +Cohesion: 0.17 +Nodes (14): _build_driver_url(), get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, _build_arrange_result(), _build_driver_url(), TransportInventoryLinkRead, TransportSiteLinkRead, build_transport_inventory_link_read() (+6 more) ### Community 54 - "Community 54" -Cohesion: 0.26 -Nodes (23): _get_by_plan(), get_inbound(), get_inbound_by_plan(), _get_order(), get_outbound(), get_outbound_by_plan(), inbound_site_url(), list_inbound() (+15 more) +Cohesion: 0.19 +Nodes (28): _get_by_plan(), get_inbound(), get_inbound_by_plan(), _get_order(), get_outbound(), get_outbound_by_plan(), inbound_site_url(), list_inbound() (+20 more) ### Community 55 - "Community 55" -Cohesion: 0.28 -Nodes (11): assert_products_allowed_for_supplier(), enrich_products_with_hazard_flags(), get_supplier_hazard_flags(), product_allowed(), Any, Session, 批量回填明细行 isToxic/isExplosive(来自产品主数据,供前端切换主体剔除)。, test_dual_requires_both() (+3 more) +Cohesion: 0.11 +Nodes (30): get_current_time(), parse_datetime(), datetime, get_pool_record(), list_pool_records(), Any, Session, _row_to_dict() (+22 more) ### Community 56 - "Community 56" -Cohesion: 0.40 -Nodes (12): create_follow(), _enrich_follow_dict(), get_follow(), list_follows(), list_follows_by_customer(), Any, Session, _row_to_dict() (+4 more) +Cohesion: 0.18 +Nodes (31): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), legacy_parent_id(), load_oss_id_to_url(), load_runtime_settings() (+23 more) ### Community 57 - "Community 57" -Cohesion: 0.40 -Nodes (9): create_oss(), create_oss(), get_oss_by_id(), get_oss_by_url(), Session, 按主键 id 查询附件(兼容旧 CRM 雪花 oss_id 迁入后的记录), 将 fileUrl 或旧 CRM 数字 ossId 解析为 MinIO 相对路径。 门户新上传把相对路径写入业务字段;迁入合同附件仍存数字 ossId, resolve_storage_path() (+1 more) +Cohesion: 0.38 +Nodes (10): generate_uuid(), create_oss(), create_oss(), get_oss_by_id(), get_oss_by_url(), Session, 按主键 id 查询附件(兼容旧 CRM 雪花 oss_id 迁入后的记录), 将 fileUrl 或旧 CRM 数字 ossId 解析为 MinIO 相对路径。 门户新上传把相对路径写入业务字段;迁入合同附件仍存数字 ossId (+2 more) ### Community 58 - "Community 58" -Cohesion: 0.28 -Nodes (17): _address_to_read(), _build_address_query(), create_transport_address(), delete_transport_address(), _get_address(), get_transport_address(), list_all_transport_addresses(), list_transport_addresses() (+9 more) +Cohesion: 0.18 +Nodes (29): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+21 more) ### Community 59 - "Community 59" Cohesion: 0.20 Nodes (28): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+20 more) ### Community 60 - "Community 60" -Cohesion: 0.09 -Nodes (21): 分页查询供方列表 — Java: CrmSupplierInfoController.list, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方详情 — Java: CrmSupplierInfoController.getInfo, 新增供方 — Java: CrmSupplierInfoController.add, 修改供方 — Java: CrmSupplierInfoController.edit, 删除供方 — Java: CrmSupplierInfoController.remove, 导出供方列表 — Java: CrmSupplierInfoController.export, supplier_info_add() (+13 more) +Cohesion: 0.12 +Nodes (16): 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方详情 — Java: CrmSupplierInfoController.getInfo, 新增供方 — Java: CrmSupplierInfoController.add, 修改供方 — Java: CrmSupplierInfoController.edit, 删除供方 — Java: CrmSupplierInfoController.remove, supplier_info_add(), supplier_info_delete(), supplier_info_detail() (+8 more) ### Community 61 - "Community 61" -Cohesion: 0.07 -Nodes (72): _generate_notify_message(), _is_rearrange(), QrCodeResponse, 仅计划已正式安排才算「调整运输」。 创建/编辑表单预选车辆会留下 draft 运输单,计划仍为 pending; 若把非 cancelled, SoftDeleteModel, BizAttachment, PlCarrier, PlDocumentReminder (+64 more) +Cohesion: 0.11 +Nodes (43): PlTransportDbLink, 运输-地磅出入库关联 pl_transport_db_link, _apply_plan_quantity_delta(), _create_db_inventory(), _create_db_plan(), DibangInventoryLinkResult, find_monthly_db_plan(), _generate_batch_no() (+35 more) ### Community 62 - "Community 62" -Cohesion: 0.17 -Nodes (11): price_letter_add(), price_letter_detail(), price_letter_list(), price_letter_update(), price_letter_void(), PriceLetterCreateBody, PriceLetterDetailBody, PriceLetterListBody (+3 more) +Cohesion: 0.19 +Nodes (15): 返回 (作废, 归档)。现场链接实际走入库/出库单公共页。, _resolve_io_order_link_flags(), _resolve_site_link_flags(), _resolve_driver_link_flags(), 运输计划司机/现场公共链接:归档后应标记并拦截写操作。, test_driver_link_flags_archived_when_plan_archived(), test_driver_link_flags_voided_by_transport_cancelled(), test_driver_link_flags_voided_takes_precedence_shape() (+7 more) ### Community 63 - "Community 63" -Cohesion: 0.21 -Nodes (19): _cargo_stats(), get_dashboard_stats(), get_inbound_by_cargo(), get_inbound_by_partner_cargo(), get_outbound_by_cargo(), get_outbound_by_partner_cargo(), _partner_cargo_stats(), Session (+11 more) +Cohesion: 0.38 +Nodes (14): _cargo_stats(), get_dashboard_stats(), get_inbound_by_cargo(), get_inbound_by_partner_cargo(), get_outbound_by_cargo(), get_outbound_by_partner_cargo(), _partner_cargo_stats(), Session (+6 more) ### Community 64 - "Community 64" -Cohesion: 0.24 -Nodes (11): extract_minio_object_key(), join_relative_urls(), normalize_oss_storage_url(), MinIO 附件 URL 规范化(数据迁移共用)。 背景 ---- CRM / 地磅 / 报销与 shanxia2.0 共用同一 MinIO(bucket 默, 业务表 OSS ID 串 → 相对 URL 串(用于客户证照、跟进附件等)。, 去掉预签名 query(``?X-Amz-...``)。, 将绝对/相对 URL 规范为 MinIO object key(不含 bucket)。, 迁移 CRM ``sys_oss`` 行:``url`` + ``file_name`` → 门户相对路径。 (+3 more) +Cohesion: 0.07 +Nodes (42): bx_health(), 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, delete_invoice(), get_mine_wallet_summary(), list_invoice_ledgers(), list_invoice_wallets(), list_invoices() (+34 more) ### Community 65 - "Community 65" -Cohesion: 0.09 -Nodes (68): Session, recognize_cert(), RecognizeCertBody, cancel_apply(), create_apply(), create_process(), delete_applies(), delete_processes() (+60 more) +Cohesion: 0.15 +Nodes (42): PlVehicleMaintenanceApply, PlVehicleMaintenanceProcess, 车辆维保申请 pl_vehicle_maintenance_apply, 车辆维保处理登记 pl_vehicle_maintenance_process, Decimal, VehicleMaintenanceApplyCreate, VehicleMaintenanceApplyRead, VehicleMaintenanceApplyReminder (+34 more) ### Community 66 - "Community 66" -Cohesion: 0.10 -Nodes (28): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+20 more) +Cohesion: 0.29 +Nodes (14): create_clue_follow(), delete_clue_follow(), get_clue_follow(), get_follow_statistics(), list_clue_follows(), Any, Session, 更新线索跟进记录,必要时同步线索 next_time (+6 more) ### Community 67 - "Community 67" Cohesion: 0.12 @@ -481,36 +481,36 @@ Cohesion: 0.33 Nodes (13): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), Any (+5 more) ### Community 69 - "Community 69" -Cohesion: 0.14 -Nodes (28): _append_user_scope_conditions(), apply_data_scope(), assert_row_in_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3 (+20 more) +Cohesion: 0.15 +Nodes (27): _append_user_scope_conditions(), apply_data_scope(), assert_row_in_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3 (+19 more) ### Community 70 - "Community 70" -Cohesion: 0.20 -Nodes (15): align_contract_no_to_sign_date(), 标准编号替换日期段,保留序号;非标准返回 None。, 将标准合同编号日期段对齐签订日;撞号则序号顺延(含软删查重)。 非标准编号原样返回。无签订日则原样返回。, replace_contract_no_date(), _mock_last_contract(), 软删占用的编号仍占唯一索引,生成时须跳过(对齐 uk_contract_tenant_no)。, 取最大流水号须含软删,避免复用已软删的最大编号。, test_align_bumps_seq_when_occupied() (+7 more) +Cohesion: 0.18 +Nodes (18): align_contract_no_to_sign_date(), generate_contract_no(), date, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} 流水与撞号检测须含软删:uk_contr, 标准编号替换日期段,保留序号;非标准返回 None。, 将标准合同编号日期段对齐签订日;撞号则序号顺延(含软删查重)。 非标准编号原样返回。无签订日则原样返回。, replace_contract_no_date(), _mock_last_contract() (+10 more) ### Community 71 - "Community 71" -Cohesion: 0.14 -Nodes (27): create_vehicle(), get_vehicle(), list_personnel(), list_vehicles(), update_vehicle(), _vehicle_to_detail(), _vehicle_to_read(), PlCert (+19 more) +Cohesion: 0.06 +Nodes (56): operlog_detail(), operlog_list(), Session, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info(), ApiRequestLogMiddleware, _claims_from_auth(), _format_body_bytes() (+48 more) ### Community 72 - "Community 72" Cohesion: 0.29 -Nodes (16): create_contact(), get_contact(), list_contacts_by_customer(), _parse_optional_date(), Any, date, Session, _row_to_dict() (+8 more) +Nodes (16): ensure_crm_customer_linked_row_in_scope(), ensure_crm_owner_row_in_scope(), Session, CRM 数据权限辅助(负责人 owner_user_id + 标准 create_by/create_dept_id)。, 客户子表(开票信息等):先校验关联客户 owner scope,否则校验 create_by。, _clear_default_for_customer(), create_invoice_info(), get_invoice_info() (+8 more) ### Community 73 - "Community 73" Cohesion: 0.20 Nodes (25): derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+17 more) ### Community 74 - "Community 74" -Cohesion: 0.12 -Nodes (25): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, 流程定义版本 wf_process_version, 流程实例 wf_process_instance (+17 more) +Cohesion: 0.13 +Nodes (19): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, StartInstanceBody, 流程实例 wf_process_instance, WfNode, WfProcessInstance, _dispatch_local() (+11 more) ### Community 75 - "apply_crm_create_by_scope" -Cohesion: 0.18 -Nodes (6): convert_heic_to_jpeg(), _guess_preview_content_type(), QiniuStorage, 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS (, 按对象键后缀推断内联预览 Content-Type(纠正上传时未写入 MIME 的情况)。, 将 HEIC/HEIF 格式转换为 JPEG 格式 +Cohesion: 0.33 +Nodes (12): PlInventoryTransaction, 库存流水表 pl_inventory_transaction, apply_archive_inventory_for_plan(), apply_brand_stock_change(), get_or_create_inventory(), Decimal, Session, qty_delta_for_plan() (+4 more) ### Community 76 - "opportunity_follow.py" Cohesion: 0.27 -Nodes (10): carrier_agreement_expired(), carrier_audit_approved(), carrier_eligible_for_transport(), carrier_qualification_complete(), date, 资质附件均为选填,保留函数签名供兼容调用。, _urls_nonempty(), validate_carrier_qualification_fields() (+2 more) +Nodes (11): customer_dealed(), customer_export(), customer_key(), customer_list(), customer_long_time_no_follow(), customer_mine(), customer_to_follow(), customer_week_new() (+3 more) ### Community 77 - "Community 77" Cohesion: 0.11 @@ -521,12 +521,12 @@ Cohesion: 0.24 Nodes (18): _actor_ids(), _actor_names(), assert_row_deletable_by_creator(), assert_rows_deletable_by_creator(), can_delete_by_creator(), is_super_admin(), normalize_user_info(), Any (+10 more) ### Community 79 - "PlCarrier" -Cohesion: 0.49 -Nodes (10): apply_pl_scope(), Session, build_menu_badge_counts(), count_document_reminder_expired_pending(), count_freight_approval_pending(), count_freight_disburse_pending(), _count_pending_applies(), count_plan_archive_pending() (+2 more) +Cohesion: 0.16 +Nodes (22): _build_public_page(), _format_file_size(), _format_plan_date(), get_public_transport(), _get_transport_by_token(), _parse_feedback_images(), Session, UploadFile (+14 more) ### Community 80 - "resolve_crm_product" -Cohesion: 0.25 -Nodes (10): _cert_url_blank(), plan_has_hazard_product_exists(), plan_has_incomplete_hazard_cert_exists(), 证书 URL 为空(NULL / 空串 / 纯空白)。, 列表筛选:计划下存在 CRM 标识为易制毒/易制爆的产品。, 列表筛选:存在危化产品且至少一张必需证书未上传。, _compile(), 危化品证上传列表筛选:EXISTS 子查询应覆盖 CRM 危化标识与证书缺口。 (+2 more) +Cohesion: 0.21 +Nodes (15): load_brand_qtys_by_plan_product_ids(), persist_plan_product_brand_qtys(), Any, Decimal, Session, 按计划产品明细 ID 批量加载归档品牌数量(brandId/brandName/qty)。, 软删旧品牌量行后按归档结果插入;无品牌约定则只软删不插入。, validate_brand_qty_rows() (+7 more) ### Community 81 - "customer_follow.py" Cohesion: 0.15 @@ -537,128 +537,164 @@ Cohesion: 0.43 Nodes (5): calc_age_from_chinese_id_card(), date, 从 18 位身份证号计算周岁。号码不完整或出生日期无效时返回 None。, test_calc_age_from_18_digit_id(), test_calc_age_rejects_invalid() ### Community 83 - "Community 83" -Cohesion: 0.14 -Nodes (32): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), can_user_approve() (+24 more) +Cohesion: 0.15 +Nodes (30): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), can_user_approve() (+22 more) ### Community 84 - "Community 84" -Cohesion: 0.10 -Nodes (32): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n, 发送催单通知给配送员 Args: deliver_openid: 配送员openid, 发送模板消息 Args: openid: 用户openid template_ (+24 more) +Cohesion: 0.23 +Nodes (23): build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str(), main(), map_id() (+15 more) ### Community 85 - "allocate_next_biz_no" Cohesion: 0.33 Nodes (8): allocate_next_biz_no(), _format_biz_no(), _prefix_for(), datetime, Session, 业务协议号自动生成:XBCC / JZCC + YYYYMMDD + 6 位序号, 原子分配下一个业务协议号。 须在 create 事务内调用;使用 MySQL LAST_INSERT_ID 保证并发安全。, BizNoKind ### Community 86 - "Community 86" -Cohesion: 0.33 -Nodes (11): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+3 more) +Cohesion: 0.24 +Nodes (7): camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session, ModelType ### Community 87 - "Community 87" -Cohesion: 0.11 -Nodes (32): approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals(), list_quote_approvals(), Any (+24 more) +Cohesion: 0.10 +Nodes (34): invalidate_all_approvals(), 作废该合同全部有效审批记录(含已通过/已拒绝),用于再编辑或重新提审。, approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals() (+26 more) ### Community 88 - "CrmProduct" -Cohesion: 0.38 -Nodes (6): 解析司机:显式选择优先,否则取车辆关联司机;均无则允许为空。, _resolve_driver(), 运输计划解析司机:车辆未关联司机时允许为空。, 未显式选司机、车辆也无关联司机时,应返回空三元组而非 400。, test_resolve_driver_with_explicit_id_returns_personnel(), test_resolve_driver_without_vehicle_link_returns_none() +Cohesion: 0.42 +Nodes (11): _enrich_follow_dict(), get_follow(), list_follows(), list_follows_by_customer(), Any, Session, _row_to_dict(), soft_delete_follow() (+3 more) ### Community 89 - "pl_ocr_service.py" Cohesion: 0.19 Nodes (22): PlOcrUsageMonth, 阿里云 OCR 月度调用计数 pl_ocr_usage_month(按自然月全局统计), assert_quota_available(), _build_ocr_client(), compress_image_bytes(), current_usage_month(), _first_attachment_url(), get_or_create_usage_row() (+14 more) -### Community 90 - "SysApiRequestLog" -Cohesion: 0.40 -Nodes (6): _ensure_subpack_slip_no(), _format_subpack_slip_no(), _normalize_subpack_slip_no(), 将历史分装单号统一为 NO:SXFZYYYYMMDD-###, 分配分装单号 NO:SXFZYYYYMMDD-###(按租户每日递增), _subpack_slip_no_seq() +### Community 90 - "WechatMessageService" +Cohesion: 0.15 +Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n, 发送催单通知给配送员 Args: deliver_openid: 配送员openid, 发送模板消息 Args: openid: 用户openid template_ (+1 more) -### Community 91 - "pl_vehicle_recharge_service.py" -Cohesion: 0.38 -Nodes (13): ensure_crm_customer_linked_row_in_scope(), 客户子表(开票信息等):先校验关联客户 owner scope,否则校验 create_by。, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer(), Any, Session (+5 more) +### Community 91 - "opportunity_product.py" +Cohesion: 0.40 +Nodes (12): apply_site_feedback(), 更新明细实际数量,并按需校验/持久化现场品牌数量。, update_io_order_items_qty_and_brand(), OrderItem, _header(), _item(), test_apply_site_feedback_does_not_reset_first_submitted_at(), test_apply_site_feedback_keeps_in_progress_when_requested() (+4 more) ### Community 92 - "Community 92" -Cohesion: 0.18 -Nodes (22): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), _assert_users_exist(), get_setting() (+14 more) +Cohesion: 0.20 +Nodes (21): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), _assert_users_exist(), get_setting() (+13 more) -### Community 93 - "list_products" -Cohesion: 0.40 -Nodes (5): list_products(), 产品/客户列表 keyword:名称/编号/拼音首字母 OR 匹配。, test_list_customer_options_keyword_includes_name_and_pinyin(), test_list_customers_keyword_includes_name_and_pinyin(), test_list_products_keyword_includes_name_and_pinyin() +### Community 93 - "api_request_log_middleware.py" +Cohesion: 0.11 +Nodes (7): convert_heic_to_jpeg(), OSSStorage, process_image_content(), QiniuStorage, 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS (, 将 HEIC/HEIF 格式转换为 JPEG 格式, 处理图片内容,如果是 HEIC 格式则转换为 JPEG ### Community 94 - "assert_contract_editable_for_update" Cohesion: 0.60 Nodes (3): assert_contract_editable_for_update(), test_assert_allows_editable(), test_assert_rejects_non_editable() -### Community 95 - "Community 95" -Cohesion: 0.35 -Nodes (11): create_tenant(), get_tenant(), list_tenants(), Any, Session, _row_to_dict(), soft_delete_tenant(), tenant_no_exists() (+3 more) +### Community 95 - "test_pl_public_link_archived.py" +Cohesion: 0.21 +Nodes (9): 按 18 位身份证号重算 pl_personnel.age,仅更新算出值与库中不一致的记录。返回更新条数。, refresh_personnel_ages_from_id_card(), 每天早上9点:保护期到期提醒(3天内到期且跟进不足), remind_customer_recycle(), warn_customer_recycle(), 每日扫描 pl_cert,生成证件到期提醒。, scan_pl_cert_expiry_job(), 每日凌晨重算 pl_personnel 年龄(有合法 18 位身份证号的记录)。 (+1 more) -### Community 96 - "__init__.py" -Cohesion: 0.39 -Nodes (10): create_site(), get_site(), list_sites(), Any, Session, _row_to_dict(), site_code_exists(), soft_delete_site() (+2 more) +### Community 96 - "opportunity_follow.py" +Cohesion: 0.25 +Nodes (9): _error_json(), Exception, Request, 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), JSONResponse (+1 more) ### Community 97 - "_ensure_subpack_slip_no" Cohesion: 0.21 Nodes (22): clear_target_products(), count_target_rows(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+14 more) +### Community 98 - "LocalStorage" +Cohesion: 0.48 +Nodes (6): merge_plan_logistics_into_order(), merge_plan_product_into_item(), resolve_unit_label(), test_merge_plan_logistics_into_order(), test_merge_plan_product_into_item(), test_resolve_unit_label_maps_dun() + ### Community 99 - "QiniuStorage" Cohesion: 0.67 Nodes (3): parse_optional_plan_datetime(), datetime, 运输计划相关日期时间解析:前端 date-picker 仅传 YYYY-MM-DD。 ### Community 100 - "price_letter_detail" -Cohesion: 0.31 -Nodes (13): apply_renumber(), build_mapping(), fetch_products(), format_new_product_no(), load_settings_env(), main(), product_id_sort_key(), Engine (+5 more) +Cohesion: 0.27 +Nodes (15): Settings, BaseSettings, apply_renumber(), build_mapping(), fetch_products(), format_new_product_no(), load_settings_env(), main() (+7 more) -### Community 101 - "list_product_options" -Cohesion: 0.67 -Nodes (3): list_product_options(), 产品下拉 options:keyword 按产品名称/拼音首字母模糊匹配,不匹配产品编号。, test_list_product_options_keyword_only_filters_product_name() +### Community 101 - "tenant.py" +Cohesion: 0.14 +Nodes (22): list_ethnics(), Any, Session, 民族码表 CRUD(全局 sys_ethnic), _row_to_dict(), create_tenant(), get_tenant(), list_tenants() (+14 more) + +### Community 102 - "crm_supplier_hazard.py" +Cohesion: 0.21 +Nodes (11): list_products(), get_supplier_hazard_flags(), product_allowed(), 产品/客户列表 keyword:名称/编号/拼音首字母 OR 匹配。, test_list_customer_options_keyword_includes_name_and_pinyin(), test_list_customers_keyword_includes_name_and_pinyin(), test_list_products_keyword_includes_name_and_pinyin(), test_dual_requires_both() (+3 more) ### Community 103 - "pl_internal_customer.py" -Cohesion: 0.17 -Nodes (21): PlanContractGapRead, is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免), build_plan_contract_gap_read(), compute_contract_gap_sides(), _demander_gap_expr(), list_plan_contract_gaps(), plan_has_contract_gap_exists() (+13 more) +Cohesion: 0.28 +Nodes (7): parse_resource_snapshot(), Any, 运输计划 - 安排运输时车辆/人员/证件资源快照 Schema, 从 ORM 文本列或 dict 解析快照。, TransportResourceSnapshot, apply_resource_snapshot_json(), 将快照 JSON 写入计划/运输单,并同步标量冗余字段。 ### Community 104 - "apply_crm_create_by_scope" Cohesion: 0.28 Nodes (16): create_price_letter(), get_price_letter(), list_price_letters(), _parse_date(), Any, date, Session, _row_to_dict() (+8 more) +### Community 105 - "pool_customer_assign" +Cohesion: 0.17 +Nodes (11): pool_customer_assign(), pool_customer_claim(), pool_customer_list(), pool_record_detail(), pool_record_list(), PoolAssignBody, PoolClaimBody, PoolCustomerListBody (+3 more) + +### Community 106 - "site.py" +Cohesion: 0.39 +Nodes (10): create_site(), get_site(), list_sites(), Any, Session, _row_to_dict(), site_code_exists(), soft_delete_site() (+2 more) + ### Community 107 - "apply_pl_scope" -Cohesion: 0.16 -Nodes (30): create_instance(), create_process_def(), create_task(), get_all_tasks_for_business(), get_instance(), get_latest_version(), get_nodes_by_version(), get_pending_tasks_by_node() (+22 more) +Cohesion: 0.14 +Nodes (34): create_instance(), create_process_def(), create_task(), get_all_tasks_for_business(), get_instance(), get_latest_version(), get_nodes_by_version(), get_pending_tasks_by_node() (+26 more) + +### Community 108 - "statistics.py" +Cohesion: 0.45 +Nodes (11): _customer_base_query(), get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics(), get_source_statistics(), get_trend_statistics() (+3 more) ### Community 109 - "Community 109" -Cohesion: 0.12 -Nodes (34): bind_vehicle_driver(), paste_recognize_commit(), generate_uuid(), PlVehiclePersonnel, 车辆-人员关联表 pl_vehicle_personnel, VehiclePersonnelRow, ConflictAction, PasteCommitBody (+26 more) +Cohesion: 0.24 +Nodes (11): extract_minio_object_key(), join_relative_urls(), normalize_oss_storage_url(), MinIO 附件 URL 规范化(数据迁移共用)。 背景 ---- CRM / 地磅 / 报销与 shanxia2.0 共用同一 MinIO(bucket 默, 业务表 OSS ID 串 → 相对 URL 串(用于客户证照、跟进附件等)。, 去掉预签名 query(``?X-Amz-...``)。, 将绝对/相对 URL 规范为 MinIO object key(不含 bucket)。, 迁移 CRM ``sys_oss`` 行:``url`` + ``file_name`` → 门户相对路径。 (+3 more) + +### Community 110 - "plan_has_incomplete_hazard_cert_exists" +Cohesion: 0.47 +Nodes (5): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no() ### Community 111 - "Community 111" Cohesion: 0.28 Nodes (14): _assert_editable(), _build_public_page(), _format_file_size(), _get_inventory_by_token(), get_public_inventory(), _parse_feedback_images(), Session, UploadFile (+6 more) -### Community 113 - "quote_share_log.py" -Cohesion: 0.26 -Nodes (12): list_share_logs(), _parse_user_agent(), Any, Session, CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, Java: statisticsVisits, 简易 User-Agent 解析(替代 Hutool UserAgentUtil), Java: queryLogsByQuoteId (+4 more) +### Community 112 - ".to_tenant_user_dict" +Cohesion: 0.40 +Nodes (3): Any, 供 get_tenant_no 等门户工具使用。, 与门户 JWT / apply_data_scope 所需的 user_info 字段对齐。 ### Community 114 - "db_models.py" -Cohesion: 0.16 -Nodes (17): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no(), DbSequence, 地磅(db)模块数据模型 — 对齐 docs/sql/db_tables.sql, _allocate_inbound_outbound_id() (+9 more) +Cohesion: 0.28 +Nodes (11): DbSequence, _allocate_inbound_outbound_id(), _ensure_sequence_row(), max_numeric_inbound_outbound_id(), next_inbound_outbound_id(), Session, 出入库单 id 生成 — 租户内纯数字自增,并发安全。, 当前租户下纯数字 id 的最大值(不含 UUID 等非数字主键)。 (+3 more) ### Community 115 - "site.py" -Cohesion: 0.09 -Nodes (53): approve_carrier(), create_carrier(), create_driver(), create_personnel(), delete_carrier(), delete_driver(), delete_personnel(), delete_vehicle() (+45 more) +Cohesion: 0.05 +Nodes (126): approve_carrier(), bind_vehicle_driver(), create_carrier(), create_driver(), create_personnel(), create_vehicle(), delete_carrier(), delete_driver() (+118 more) ### Community 116 - "Community 116" -Cohesion: 0.18 -Nodes (27): calculate_subtotal(), _decimal_value(), delete_products_by_quote_id(), _ensure_quote_parent_scope(), _get_field(), get_quote_product(), insert_quote_product(), list_products_by_quote_ids() (+19 more) +Cohesion: 0.19 +Nodes (26): batch_insert_quote_products(), calculate_subtotal(), _decimal_value(), _ensure_quote_parent_scope(), _get_field(), get_quote_product(), insert_quote_product(), list_products_by_quote_ids() (+18 more) + +### Community 117 - "get_web_auth_menu_codes" +Cohesion: 0.50 +Nodes (4): 简易搜索:计划编号 / 客户(供应商) / 车牌 / 承运商名称。, unsettled_plans_q_filter(), 未结算计划简易搜索:q 应覆盖计划编号/客户/车牌/承运商名称。, test_unsettled_plans_q_filter_includes_carrier_and_plate() ### Community 118 - "Community 118" -Cohesion: 0.20 -Nodes (24): batch_insert_contract_products(), calculate_subtotal(), _decimal_value(), delete_price_tiers_by_contract_id(), delete_products_by_contract_id(), _get_field(), insert_contract_product(), _letter_oss_ids_to_json() (+16 more) +Cohesion: 0.15 +Nodes (29): batch_insert_contract_products(), calculate_subtotal(), _decimal_value(), delete_price_tiers_by_contract_id(), delete_products_by_contract_id(), _get_field(), insert_contract_product(), _letter_oss_ids_to_json() (+21 more) ### Community 119 - "Community 119" -Cohesion: 0.16 -Nodes (28): CertRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), match_required_cert_name(), _missing_field_labels(), Session (+20 more) +Cohesion: 0.12 +Nodes (37): CertRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), is_huolala_trailer_no(), match_required_cert_name(), _missing_field_labels() (+29 more) + +### Community 120 - "sqlalchemy_exception_handler" +Cohesion: 0.21 +Nodes (6): _db_pool_keepalive_loop(), lifespan(), 定期 ping MySQL,避免远程库/NAT 回收空闲 TCP 后首请求长时间卡住。, init_scheduled_tasks(), shutdown_scheduler(), 免登车牌 options 接口入参校验(不依赖真实 DB 数据)。 + +### Community 121 - "Session" +Cohesion: 0.09 +Nodes (27): API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), Session (+19 more) ### Community 122 - "Community 122" Cohesion: 0.39 Nodes (10): create_post(), get_post(), list_posts(), post_code_exists(), Any, Session, _row_to_dict(), soft_delete_post() (+2 more) -### Community 125 - "Community 125" -Cohesion: 0.24 -Nodes (7): camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session, ModelType +### Community 123 - "list_product_options" +Cohesion: 0.67 +Nodes (3): list_product_options(), 产品下拉 options:keyword 按产品名称/拼音首字母模糊匹配,不匹配产品编号。, test_list_product_options_keyword_only_filters_product_name() ### Community 126 - "customer_pool.py" Cohesion: 0.36 @@ -689,8 +725,8 @@ Cohesion: 0.22 Nodes (15): get_storage(), download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url(), normalize_storage_path(), 报销附件存储适配 — 复用门户 app.core.storage,对外保持 bx 协议。 (+7 more) ### Community 141 - "PlTransport" -Cohesion: 0.19 -Nodes (23): approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), get_business_all_tasks(), _get_business_form_fields() (+15 more) +Cohesion: 0.18 +Nodes (25): approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), get_business_all_tasks(), _get_business_form_fields() (+17 more) ### Community 144 - "dict_data.py" Cohesion: 0.27 @@ -698,23 +734,19 @@ Nodes (11): create_dict_data(), get_dict_data(), list_dict_data(), list_dict_dat ### Community 145 - "resolve_crm_product" Cohesion: 0.07 -Nodes (62): _build_page(), _get_by_token(), _make_handlers(), _models(), Session, 运输计划 · 入库/出库单现场免登录公共 API, PlInboundOrder, PlInboundOrderItem (+54 more) +Nodes (56): _build_page(), _get_by_token(), _models(), Session, 运输计划 · 入库/出库单现场免登录公共 API, BizAttachment, PlDriver, PlInboundOrder (+48 more) ### Community 147 - "Community 147" Cohesion: 0.37 Nodes (17): check_env(), check_python(), create_venv(), init_env(), install_dependencies(), log_error(), log_info(), log_success() (+9 more) ### Community 154 - "response.py" -Cohesion: 0.24 -Nodes (5): MinIOStorage, Any, 从 MINIO_BASE_URL 解析公网 endpoint;未配置或与内网相同时复用 self.client。, MinIO 预签名下载 URL,携带原始文件名。, MinIO 预签名内联预览 URL(图片新标签页 / PDF iframe 等)。 上传时 put_object 未写 content_typ +Cohesion: 0.19 +Nodes (7): _guess_preview_content_type(), MinIOStorage, Any, 从 MINIO_BASE_URL 解析公网 endpoint;未配置或与内网相同时复用 self.client。, 按对象键后缀推断内联预览 Content-Type(纠正上传时未写入 MIME 的情况)。, MinIO 预签名下载 URL,携带原始文件名。, MinIO 预签名内联预览 URL(图片新标签页 / PDF iframe 等)。 上传时 put_object 未写 content_typ ### Community 159 - "customer_update" -Cohesion: 0.18 -Nodes (17): get_web_auth_menu_codes(), 获取当前用户菜单权限标识(sys_menu.perms,经角色继承)。, get_user_menu_codes(), Session, 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user(), iter_user_menu_perm_codes() (+9 more) - -### Community 160 - "register_local_callback" -Cohesion: 0.09 -Nodes (27): API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), Session (+19 more) +Cohesion: 0.16 +Nodes (19): get_web_auth_menu_codes(), 获取当前用户菜单权限标识(sys_menu.perms,经角色继承)。, get_user_menu_codes(), Session, 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user(), iter_user_menu_perm_codes() (+11 more) ### Community 162 - ".to_tenant_user_dict" Cohesion: 0.42 @@ -725,32 +757,20 @@ Cohesion: 0.09 Nodes (46): _avatar_url_field(), _build_user_info_payload(), change_current_user_password(), get_current_user_profile(), _jwt_user_payload(), logout(), public_quote_share(), Request (+38 more) ### Community 170 - "test_quote_approver_setting.py" -Cohesion: 0.15 -Nodes (3): BaseStorage, OSSStorage, 浏览器内联预览 URL;默认实现为普通访问地址。 - -### Community 171 - "minio_url.py" -Cohesion: 0.09 -Nodes (34): get_current_time(), parse_datetime(), datetime, get_pool_record(), list_pool_records(), Any, Session, _row_to_dict() (+26 more) +Cohesion: 0.22 +Nodes (3): BaseStorage, 带下载文件名的访问 URL;默认实现为普通访问地址。, 浏览器内联预览 URL;默认实现为普通访问地址。 ### Community 173 - "resolve_create_time_bounds" -Cohesion: 0.08 -Nodes (71): _build_driver_url(), get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible(), _build_arrange_result() (+63 more) - -### Community 174 - "register_local_callback" -Cohesion: 0.06 -Nodes (58): 列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。, _resolve_list_product_name(), 返回 (作废, 归档)。现场链接实际走入库/出库单公共页。, _resolve_io_order_link_flags(), _build_public_page(), _build_site_product_read(), _format_file_size(), get_public_site() (+50 more) +Cohesion: 0.14 +Nodes (33): _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible(), create_transport(), _ensure_driver_access_token(), generate_qrcode(), _generate_transport_no() (+25 more) ### Community 179 - "test_pl_vehicle_personnel_photo_schema.py" Cohesion: 0.27 Nodes (16): add_favorite(), count_active(), find_active(), find_soft_deleted(), list_favorites(), _next_order_num(), normalize_menu_path(), Any (+8 more) -### Community 182 - "statistics.py" -Cohesion: 0.45 -Nodes (11): _customer_base_query(), get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics(), get_source_statistics(), get_trend_statistics() (+3 more) - ### Community 188 - "get_client_ip" -Cohesion: 0.30 -Nodes (10): get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生, run_auto_generate_monthly_plans(), default_execution_status() (+2 more) +Cohesion: 0.24 +Nodes (12): get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生, run_auto_generate_monthly_plans(), default_execution_status() (+4 more) ### Community 206 - "crm_quote_pdf.py" Cohesion: 0.36 @@ -761,8 +781,8 @@ Cohesion: 0.18 Nodes (10): 1. 创建虚拟环境, 2. 安装依赖, 3. 配置环境变量, 4. 启动服务, API 路由分组, shanxia2.0 后端骨架(FastAPI), 开发规范, 快速开始 (+2 more) ### Community 220 - "api_crypto_middleware.py" -Cohesion: 0.15 -Nodes (22): ApiCryptoMiddleware, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key() (+14 more) +Cohesion: 0.14 +Nodes (23): ApiCryptoMiddleware, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key() (+15 more) ### Community 237 - "order_status_compat.py" Cohesion: 0.36 @@ -784,17 +804,17 @@ Nodes (6): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时 ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `generate_uuid()` connect `Community 109` to `Community 0`, `Community 4`, `Community 5`, `Community 6`, `Community 134`, `Community 8`, `statistics.py`, `Community 136`, `Community 11`, `Community 14`, `Community 15`, `dict_data.py`, `Community 17`, `Community 18`, `resolve_crm_product`, `Community 16`, `Community 21`, `Community 24`, `Community 28`, `Community 29`, `Community 32`, `get_client_ip`, `Community 36`, `Community 39`, `Community 40`, `Community 41`, `minio_url.py`, `Community 43`, `resolve_create_time_bounds`, `Community 47`, `Community 50`, `Community 56`, `Community 57`, `Community 58`, `get_client_ip`, `Community 61`, `Community 65`, `Community 66`, `Community 67`, `Community 68`, `Community 71`, `Community 72`, `Community 83`, `allocate_next_biz_no`, `Community 86`, `Community 87`, `pl_ocr_service.py`, `pl_vehicle_recharge_service.py`, `Community 92`, `Community 95`, `__init__.py`, `apply_crm_create_by_scope`, `apply_pl_scope`, `quote_share_log.py`, `db_models.py`, `site.py`, `Community 116`, `Community 118`, `Community 122`, `customer_pool.py`?** - _High betweenness centrality (0.114) - this node is a cross-community bridge._ -- **Why does `BaseModel` connect `Community 12` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 5`, `Community 7`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 18`, `Community 19`, `Community 24`, `Community 26`, `Community 27`, `Community 28`, `Community 31`, `register_local_callback`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `resolve_create_time_bounds`, `Community 51`, `Community 53`, `Community 54`, `Community 58`, `Community 60`, `Community 61`, `Community 62`, `Community 63`, `Community 65`, `Community 66`, `Community 71`, `Community 74`, `customer_follow.py`, `pl_internal_customer.py`, `Community 109`, `Community 111`, `site.py`, `Community 119`?** +- **Why does `generate_uuid()` connect `Community 57` to `Community 4`, `Community 5`, `Community 6`, `Community 134`, `Community 8`, `statistics.py`, `Community 136`, `Community 10`, `Community 11`, `Community 15`, `Community 16`, `dict_data.py`, `Community 17`, `resolve_crm_product`, `Community 21`, `Community 24`, `Community 25`, `Community 26`, `Community 28`, `Community 29`, `Community 32`, `Community 33`, `Community 34`, `get_client_ip`, `Community 36`, `Community 39`, `Community 40`, `Community 41`, `Community 43`, `Community 44`, `resolve_create_time_bounds`, `Community 47`, `Community 51`, `Community 55`, `get_client_ip`, `Community 61`, `Community 64`, `Community 65`, `Community 66`, `Community 67`, `Community 68`, `Community 72`, `apply_crm_create_by_scope`, `resolve_crm_product`, `Community 83`, `allocate_next_biz_no`, `Community 87`, `CrmProduct`, `pl_ocr_service.py`, `Community 92`, `tenant.py`, `apply_crm_create_by_scope`, `site.py`, `apply_pl_scope`, `db_models.py`, `site.py`, `Community 116`, `Community 118`, `Community 122`, `customer_pool.py`?** + _High betweenness centrality (0.123) - this node is a cross-community bridge._ +- **Why does `BaseModel` connect `Community 12` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 5`, `Community 7`, `Community 11`, `PlTransport`, `Community 14`, `Community 13`, `Community 15`, `resolve_crm_product`, `Community 18`, `Community 19`, `Community 16`, `Community 24`, `Community 26`, `Community 27`, `Community 31`, `Community 40`, `resolve_create_time_bounds`, `Community 45`, `Community 47`, `Community 51`, `Community 53`, `Community 54`, `Community 60`, `Community 63`, `Community 64`, `Community 65`, `Community 71`, `Community 74`, `opportunity_follow.py`, `customer_follow.py`, `pl_internal_customer.py`, `pool_customer_assign`, `Community 111`, `quote_share_log.py`, `site.py`, `Community 119`, `Session`?** _High betweenness centrality (0.105) - this node is a cross-community bridge._ -- **Why does `Settings` connect `Community 46` to `_ensure_subpack_slip_no`, `Community 35`, `Community 67`, `Community 37`, `Community 38`, `price_letter_detail`, `Community 73`, `Community 42`, `Community 10`, `Community 25`, `Community 59`, `Community 30`?** - _High betweenness centrality (0.084) - this node is a cross-community bridge._ +- **Why does `Settings` connect `price_letter_detail` to `_ensure_subpack_slip_no`, `Community 35`, `Community 67`, `Community 37`, `Community 38`, `Community 73`, `Community 42`, `Community 46`, `Community 56`, `Community 58`, `Community 59`, `Community 30`?** + _High betweenness centrality (0.093) - this node is a cross-community bridge._ - **Are the 8 inferred relationships involving `DbUserContext` (e.g. with `InventoryRelatedData` and `AutoGenerateMonthlyResult`) actually correct?** _`DbUserContext` has 8 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 247 inferred relationships involving `ValueError` (e.g. with `.presigned_download_url()` and `.presigned_preview_url()`) actually correct?** - _`ValueError` has 247 INFERRED edges - model-reasoned connections that need verification._ - **What connects `API 路由包 — 山峡化工生产一体化门户`, `返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。`, `返回用户下拉选项(label=昵称,value=用户ID,附带 nickName/userNo)。 供申请人/审批人等选择场景使用,返回本租户全部有效` to the rest of the system?** - _569 weakly-connected nodes found - possible documentation gaps or missing edges._ + _573 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `Community 1` be split into smaller, more focused modules?** - _Cohesion score 0.07804878048780488 - nodes in this community are weakly interconnected._ \ No newline at end of file + _Cohesion score 0.08367071524966262 - nodes in this community are weakly interconnected._ +- **Should `Community 3` be split into smaller, more focused modules?** + _Cohesion score 0.0830188679245283 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/118c6c68d1051c471312a12a484601d08532a296f2a801a7fd80d157616e185a.json b/backend/graphify-out/cache/ast/v0.9.4/118c6c68d1051c471312a12a484601d08532a296f2a801a7fd80d157616e185a.json new file mode 100644 index 000000000..90648579c --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/118c6c68d1051c471312a12a484601d08532a296f2a801a7fd80d157616e185a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "label": "test_duty_schedule.py", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "label": "test_parse_hhmm()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L38"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm_invalid_raises", "label": "test_parse_hhmm_invalid_raises()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "label": "test_format_time_label_same_day()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L50"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "label": "test_format_time_label_cross_day()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L54"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "label": "test_format_time_label_empty()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L58"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "label": "test_work_plans_join_split()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L62"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "label": "test_build_dict_value_from_label()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L68"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "label": "test_ensure_dict_data_reuses_existing_label()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L74"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "label": "test_ensure_dict_data_inserts_new_without_commit()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "label": "test_normalize_person_name_ok()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L108"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "label": "test_normalize_person_name_empty()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L112"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "label": "test_normalize_person_name_too_long()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L117"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_shift_labels", "label": "test_shift_labels()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L122"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "label": "test_grab_rejects_when_full()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L126"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "label": "test_grab_allows_custom_shift_type_when_slot_exists()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L188"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "label": "test_grab_rejects_when_closed()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L256"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "label": "test_grab_rejects_invalid_user()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L274"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "label": "test_grab_rejects_duplicate_same_shift()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L303"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "label": "test_save_day_rejects_shrink_below_grab_count()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L369"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "label": "test_resolve_duty_staff_role_id_by_fixed_id()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L443"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "label": "test_list_duty_staff_users_empty_when_no_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L452"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "label": "test_assert_user_is_duty_staff_rejects_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L460"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "label": "test_grab_rejects_non_duty_staff()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L481"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "label": "test_save_day_grandfathers_existing_assign_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L526"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "label": "test_save_day_rejects_new_assign_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L614"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_189", "label": "\u81ea\u5b9a\u4e49 shift_type \u53ea\u8981\u5f53\u65e5\u5b58\u5728 slot \u5373\u53ef\uff0c\u4e0d\u5fc5\u5728 SHIFT_LABELS\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", "source_location": "L189"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_370", "label": "\u7f29\u5bb9\uff1a\u5df2\u6709 1 \u4eba\u62a2\u73ed\u65f6 capacity=1 \u4e14\u518d\u6307\u5b9a 1 \u4eba\u5e94\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", "source_location": "L370"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_527", "label": "\u5386\u53f2\u6307\u5b9a\u7528\u6237\u65e0\u503c\u73ed\u4eba\u5458\u89d2\u8272\u65f6\uff0c\u539f\u6837\u518d\u4fdd\u5b58\u4e0d\u5f97\u56e0\u89d2\u8272\u6821\u9a8c\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", "source_location": "L527"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "types", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_models_duty_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_schemas_duty", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_services_duty_schedule", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm_invalid_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L62", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L74", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_shift_labels", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L188", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L256", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L303", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L452", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L481", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L526", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_189", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L189", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_370", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L370", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_527", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L527", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L39", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L40", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L41", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L42", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm_invalid_raises", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L46", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm_invalid_raises", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L46"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm_invalid_raises", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L47", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "callee": "format_time_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L51", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L51", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L51", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "callee": "format_time_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "callee": "format_time_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "callee": "join_work_plans", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L63", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "callee": "split_work_plans", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "callee": "split_work_plans", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L65", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "callee": "build_dict_value_from_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L69", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "callee": "build_dict_value_from_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L70", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "callee": "build_dict_value_from_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L71", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L76", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "ensure_dict_data", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L81", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "assert_not_called", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L89", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L90", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "ensure_dict_data", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L94", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "assert_called_once", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L99", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "assert_called_once", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L100", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "assert_not_called", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L103"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "callee": "normalize_person_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L113", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L113"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "callee": "normalize_person_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L114", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L118", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L118"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "callee": "normalize_person_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L119", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L127", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L131"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L136", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L139"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L143", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L156", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L158"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L159", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L162", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L162"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L182"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L184", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L184"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L185", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L185"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L190", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L191", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L194"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L199", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L206", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L214", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L216", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L218", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L220", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L220"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L221", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L223", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L224", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L225"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L250"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L251", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L258", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "LINK_CLOSED", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L261"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L262", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L270", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L270"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L271", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L271"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L275", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L276", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L279"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L284", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L286", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L297"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L299", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L299"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L300", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L300"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L304", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L305", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L308"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L313", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L316"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L320", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L332", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L334", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L336"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L337", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L339", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L340", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L340"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L363"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L365", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L365"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L366", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L366"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L372", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L376"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L374", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L382", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L385"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L392", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SOURCE_GRAB", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L395"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L401", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L403", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L407", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L424"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutyDaySaveBody", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L426", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L427", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutySlotSaveIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L429", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L430"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutyAssignmentIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L433", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L439", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L439"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "save_day", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L440", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L444", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L445", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L445"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "DUTY_STAFF_ROLE_NAME", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L445"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L446", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "resolve_duty_staff_role_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L449", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L453", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L454", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "callee": "list_duty_staff_users", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L457", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L461", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L462", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L462"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L463", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L476"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L477", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L477"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "assert_user_is_duty_staff", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L478", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L482", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L483", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L486"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L487", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L491", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L499", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L501", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L503", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L503"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L504", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L506", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L521"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L522", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L522"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L523", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L523"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L528", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L533"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L531", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L539", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L542"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L549", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SOURCE_ASSIGN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L552"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L560", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L562", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L564", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L564"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L567", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L569", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L570", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L593"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DutyDaySaveBody", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L595", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L596", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DutySlotSaveIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L598", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L599"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DutyAssignmentIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "save_day", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L609", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "assert_called", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L611", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L616", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L617", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L621"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L627", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L630"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L637", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SOURCE_ASSIGN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L640"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L648", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L650", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L652", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L652"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L653", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L655", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L657", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L658", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L681"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutyDaySaveBody", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L683", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L684", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutySlotSaveIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L686", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L687"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutyAssignmentIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L690", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L696", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L696"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "save_day", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L697", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_allows_custom_shift_type_when_slot_exists", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm_invalid_raises", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_shift_labels", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/13b323336f1244f733296a9bb7c8d98673804966c6e54fcc37f2bafbf3338a5f.json b/backend/graphify-out/cache/ast/v0.9.4/13b323336f1244f733296a9bb7c8d98673804966c6e54fcc37f2bafbf3338a5f.json new file mode 100644 index 000000000..8253c8ae3 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/13b323336f1244f733296a9bb7c8d98673804966c6e54fcc37f2bafbf3338a5f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "label": "test_duty_schedule.py", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "label": "test_parse_hhmm()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L38"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "label": "test_format_time_label_same_day()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "label": "test_format_time_label_cross_day()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L49"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "label": "test_format_time_label_empty()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L53"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "label": "test_work_plans_join_split()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L57"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "label": "test_build_dict_value_from_label()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L63"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "label": "test_ensure_dict_data_reuses_existing_label()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L69"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "label": "test_ensure_dict_data_inserts_new_without_commit()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "label": "test_normalize_person_name_ok()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L103"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "label": "test_normalize_person_name_empty()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L107"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "label": "test_normalize_person_name_too_long()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L112"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_shift_labels", "label": "test_shift_labels()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L117"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "label": "test_grab_rejects_when_full()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L121"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "label": "test_grab_rejects_when_closed()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L183"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "label": "test_grab_rejects_invalid_user()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L201"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "label": "test_grab_rejects_duplicate_same_shift()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L230"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "label": "test_save_day_rejects_shrink_below_grab_count()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L296"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "label": "test_resolve_duty_staff_role_id_by_fixed_id()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L370"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "label": "test_list_duty_staff_users_empty_when_no_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L379"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "label": "test_assert_user_is_duty_staff_rejects_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L387"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "label": "test_grab_rejects_non_duty_staff()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L408"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "label": "test_save_day_grandfathers_existing_assign_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L453"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "label": "test_save_day_rejects_new_assign_without_role()", "file_type": "code", "source_file": "tests/test_duty_schedule.py", "source_location": "L541"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_297", "label": "\u7f29\u5bb9\uff1a\u5df2\u6709 1 \u4eba\u62a2\u73ed\u65f6 capacity=1 \u4e14\u518d\u6307\u5b9a 1 \u4eba\u5e94\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", "source_location": "L297"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_454", "label": "\u5386\u53f2\u6307\u5b9a\u7528\u6237\u65e0\u503c\u73ed\u4eba\u5458\u89d2\u8272\u65f6\uff0c\u539f\u6837\u518d\u4fdd\u5b58\u4e0d\u5f97\u56e0\u89d2\u8272\u6821\u9a8c\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "tests/test_duty_schedule.py", "source_location": "L454"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "types", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_models_duty_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_schemas_duty", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "app_services_duty_schedule", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L103", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L107", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_shift_labels", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L183", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L296", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L370", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L387", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L453", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L541", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_297", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_rationale_454", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_duty_schedule.py", "source_location": "L454", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L39", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L40", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L41", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L42", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "callee": "format_time_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L46", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L46", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L46", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "callee": "format_time_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L50", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L50", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "callee": "parse_hhmm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L50", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "callee": "format_time_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L54", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "callee": "join_work_plans", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L58", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "callee": "split_work_plans", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split", "callee": "split_work_plans", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "callee": "build_dict_value_from_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "callee": "build_dict_value_from_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L65", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "callee": "build_dict_value_from_label", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L66", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L70", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L71", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "ensure_dict_data", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L76", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "callee": "assert_not_called", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L80", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L84", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "ensure_dict_data", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L89", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "assert_called_once", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L94", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "assert_called_once", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L95", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "assert_not_called", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L98"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "callee": "normalize_person_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L108", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L108"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "callee": "normalize_person_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L113", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L113"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "callee": "normalize_person_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L114", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L123", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L126"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L127", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L131", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L134"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L138", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L147", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L151", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L153"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L156", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L157", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L157"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L177"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L179", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L179"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L180"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L184", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L185", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "LINK_CLOSED", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L188"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L189", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L197", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L197"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L198", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L198"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L202", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L203", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L206"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L207", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L211", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L213", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L224"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L226", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L226"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L227"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L231", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L232", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L235"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L236", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L243"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L247", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L255", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L259", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L261", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L263", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L263"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L264", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L267", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L267"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L290"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L292", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L292"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L293", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L293"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L299", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L303"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L301", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L312"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L319", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SOURCE_GRAB", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L322"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L332", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L334", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L351"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutyDaySaveBody", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L353", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L354", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutySlotSaveIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L356", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L357"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutyAssignmentIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L360", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L366", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L366"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "callee": "save_day", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L367", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L372", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L372"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "DUTY_STAFF_ROLE_NAME", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L372"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "callee": "resolve_duty_staff_role_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L376", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L380", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "callee": "list_duty_staff_users", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L384", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L388", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L389", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L389"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L390", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L392", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L403"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L404", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L404"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "callee": "assert_user_is_duty_staff", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L409", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L413"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L414", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L418", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L426", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L428", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L430", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L430"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L431", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L433", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L448"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L449", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L449"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "grab", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L450", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L450"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L455", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L456", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L460"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L458", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L466", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L469"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L476", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SOURCE_ASSIGN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L479"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L487", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L489", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L491", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L491"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L492", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L494", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L496", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L497", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L520"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DutyDaySaveBody", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L522", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L523", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DutySlotSaveIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L525", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L526"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "DutyAssignmentIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "save_day", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L536", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "callee": "assert_called", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L538", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L543", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L544", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L548"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L546", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L554", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L557"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L564", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SOURCE_ASSIGN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L567"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L575", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L577", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L579", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DUTY_STAFF_ROLE_ID", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L579"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L580", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L582", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "MagicMock", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L584", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SimpleNamespace", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "query_side_effect", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L608"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutyDaySaveBody", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L610", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "date", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L611", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutySlotSaveIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L613", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "SHIFT_EVENING", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L614"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutyAssignmentIn", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L617", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L623", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "DutyBizError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L623"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "callee": "save_day", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py", "source_location": "L624", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_assert_user_is_duty_staff_rejects_without_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_build_dict_value_from_label", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_inserts_new_without_commit", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_ensure_dict_data_reuses_existing_label", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_cross_day", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_empty", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_format_time_label_same_day", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_duplicate_same_shift", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_invalid_user", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_non_duty_staff", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_closed", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_grab_rejects_when_full", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_list_duty_staff_users_empty_when_no_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_empty", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_ok", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_normalize_person_name_too_long", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_parse_hhmm", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_resolve_duty_staff_role_id_by_fixed_id", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_grandfathers_existing_assign_without_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_new_assign_without_role", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_save_day_rejects_shrink_below_grab_count", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_shift_labels", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_duty_schedule_test_work_plans_join_split"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/2a17154dca48ca289d3b43b9d1195a2ca7bd1770c1978cf7ac8fe19e9af68172.json b/backend/graphify-out/cache/ast/v0.9.4/2a17154dca48ca289d3b43b9d1195a2ca7bd1770c1978cf7ac8fe19e9af68172.json new file mode 100644 index 000000000..1691b580e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/2a17154dca48ca289d3b43b9d1195a2ca7bd1770c1978cf7ac8fe19e9af68172.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "label": "PlanProductBase", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L16"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "label": "PlanProductUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L59"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "label": "PlanArchiveBrandQtyItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L81"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "label": "PlanProductRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "label": "PlanBase", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L105"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L155"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L176"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L190"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L239"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "label": "PlanRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L244"}, {"id": "planresourcesnapshotmixin", "label": "PlanResourceSnapshotMixin", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L278"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L282"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "label": "PlanDeliverySlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L287"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "label": "PlanSubpackSlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L294"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L306"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L317"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "label": "PlanListQuery", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L328"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "label": "PlanProductCertItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L353"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L361"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L366"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L373"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L384"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "label": "PlanDriverFeedbackProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L390"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "label": "PlanDriverFeedbackUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L397"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "label": "PlanSiteFeedbackUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L406"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L419"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "label": "PlanSideContractsUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L424"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "label": "PlanContractGapRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L429"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "label": "PlanContractGapListResponse", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L446"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "app_schemas_pl_datetime_parse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "app_schemas_pl_resource_snapshot", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L176", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L176", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "target": "planresourcesnapshotmixin", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L317", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L317", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L406", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L406", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L424", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L424", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L446", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/30ae50d8a7a6c5148c732955a25b51dc5f9665fa3d3e710532f7047af89dd6fa.json b/backend/graphify-out/cache/ast/v0.9.4/30ae50d8a7a6c5148c732955a25b51dc5f9665fa3d3e710532f7047af89dd6fa.json new file mode 100644 index 000000000..c8eff90c6 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/30ae50d8a7a6c5148c732955a25b51dc5f9665fa3d3e710532f7047af89dd6fa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "label": "pl_menu_badge_service.py", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "label": "_count_pending_applies()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L46"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "label": "count_document_reminder_expired_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L56"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "label": "count_freight_approval_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L69"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "label": "count_plan_cert_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "label": "count_plan_archive_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L122"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "label": "count_plan_contract_gaps()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L133"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "label": "count_freight_disburse_pending()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L146"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "label": "build_menu_badge_counts()", "file_type": "code", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L156"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "app_services_pl_cert_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "app_services_pl_freight_settlement_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L171", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L189", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L191", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_menu_badge_service.py", "source_location": "L193", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L47", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L52", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L53", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "scan_cert_expiry", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L57", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L58", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L59", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L59"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L65", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "PlDocumentReminder", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L65"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L66", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L73", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "callee": "can_user_approve_settlement", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L83", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L89", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L89"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L96"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L102", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L102"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L104", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L104"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L116", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "callee": "plan_has_hazard_products", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L117", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L123", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L123"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L129"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L130", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L136", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L136"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "callee": "plan_has_contract_gap_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L142"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L143", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L147", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "callee": "PlFreightSettlement", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L147"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "callee": "PlFreightSettlement", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L152"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L153", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L164", "receiver": "c"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L164", "receiver": "c"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "callee": "SUPPORTED_MENU_CODES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L166"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "callee": "PlVehicleRechargeApply", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L178"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "callee": "PlVehicleMaintenanceApply", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L182"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "callee": "PlVehicleUreaApply", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py", "source_location": "L186"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_build_menu_badge_counts", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_document_reminder_expired_pending", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_approval_pending", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_freight_disburse_pending", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_pending_applies", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_archive_pending", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_cert_pending", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_menu_badge_service_count_plan_contract_gaps"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/31abedce389accf504bc247ddb4aef7b2dee6b6c9b49a7415de7134d73b496b9.json b/backend/graphify-out/cache/ast/v0.9.4/31abedce389accf504bc247ddb4aef7b2dee6b6c9b49a7415de7134d73b496b9.json new file mode 100644 index 000000000..ce3767dee --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/31abedce389accf504bc247ddb4aef7b2dee6b6c9b49a7415de7134d73b496b9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "label": "_resolve_list_product_name()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L106"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "label": "_resolve_create_date()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L122"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "label": "_generate_plan_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L126"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "label": "_format_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L158"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "label": "_normalize_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L162"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "label": "_subpack_slip_no_seq()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L187"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "label": "_ensure_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L195"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "label": "_determine_plan_type()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L227"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "label": "_get_plan_type_label()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L232"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "label": "_generate_notify_message()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L241"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "label": "_plan_product_name_exists()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L261"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "label": "_plan_plate_match()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L275"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "label": "list_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L285"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "label": "count_plans_by_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L467"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "label": "list_contract_gaps()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L516"}, {"id": "plancontractgaplistresponse", "label": "PlanContractGapListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "label": "put_plan_side_contracts()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L557"}, {"id": "plansidecontractsupdatebody", "label": "PlanSideContractsUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "plancontractgapread", "label": "PlanContractGapRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "label": "create_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L587"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "label": "create_plan_full()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L671"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "label": "create_from_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L805"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "label": "get_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L919"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "label": "update_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L988"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "label": "patch_plan_product_certs()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1172"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "label": "patch_plan_hazard_cert_ready()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1204"}, {"id": "hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1235"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "label": "get_plan_arrange_info()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1241"}, {"id": "planarrangeinforead", "label": "PlanArrangeInfoRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "label": "mark_plan_wait_notice()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1384"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "label": "cancel_plan_wait_notice()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1408"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1435"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "label": "archive_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1497"}, {"id": "planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "label": "update_plan_driver_feedback()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1573"}, {"id": "plandriverfeedbackupdatebody", "label": "PlanDriverFeedbackUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "label": "update_plan_site_feedback()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1604"}, {"id": "plansitefeedbackupdatebody", "label": "PlanSiteFeedbackUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "label": "get_inbound_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1643"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "label": "save_inbound_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1654"}, {"id": "planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "label": "get_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1677"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "label": "save_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1688"}, {"id": "plandeliverysliptemplatesave", "label": "PlanDeliverySlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "label": "get_subpack_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1711"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "label": "save_subpack_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1722"}, {"id": "plansubpacksliptemplatesave", "label": "PlanSubpackSlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "label": "delete_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1759"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_112", "label": "\u5217\u8868\u5c55\u793a\u7528\uff1a\u4f18\u5148 CRM \u6807\u51c6\u540d\uff08\u8be6\u60c5\u4ecd\u8fd4\u56de\u5e93\u5185 product_name\uff0c\u4ee5\u4fbf\u7f16\u8f91\u53cd\u63a8\u522b\u540d\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L112"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_127", "label": "\u751f\u6210\u8ba1\u5212\u7f16\u53f7 POYYYYMMDD###\uff08\u5f53\u65e5 3 \u4f4d\u5e8f\u53f7\uff0c\u6bcf\u65e5\u91cd\u7f6e\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L127"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_163", "label": "\u5c06\u5386\u53f2\u5206\u88c5\u5355\u53f7\u7edf\u4e00\u4e3a NO:SXFZYYYYMMDD-###", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L163"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_196", "label": "\u5206\u914d\u5206\u88c5\u5355\u53f7 NO:SXFZYYYYMMDD-###\uff08\u6309\u79df\u6237\u6bcf\u65e5\u9012\u589e\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L196"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_676", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u4f9b\u65b9/\u9700\u65b9 + \u4ea7\u54c1\u5e93\u4ea7\u54c1 + \u53ef\u9009\u9884\u9009\u8f66\u8f86\uff0c\u4e0d\u81ea\u52a8\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L676"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1178", "label": "\u66f4\u65b0\u8ba1\u5212\u5371\u5316\u54c1\u4ea7\u54c1\u8bc1\u4e66\uff08\u8d2d\u4e70\u8bc1/\u8fd0\u8f93\u8bc1/\u5408\u6cd5\u4f7f\u7528\u8bc1\u660e\uff0c\u4e0d\u89e6\u53d1\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1178"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1246", "label": "\u83b7\u53d6\u8ba1\u5212\u5df2\u5b89\u6392\u8fd0\u8f93\u540e\u7684\u53f8\u673a\u94fe\u63a5\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054\uff08\u4f9b\u67e5\u770b\u5f39\u7a97\u590d\u5236\u7b80\u8ff0/\u4e8c\u7ef4\u7801\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1246"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1440", "label": "\u4f5c\u5e9f\u8fd0\u8f93\u8ba1\u5212\uff1a\u53d6\u6d88\u8ddf\u8fdb\u72b6\u6001\u3001\u4f5c\u5e9f\u5173\u8054\u5730\u78c5\u51fa\u5165\u5e93\u5355\u3001\u53d6\u6d88\u8fd0\u8f93\u5355\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1440"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_contract_gap", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_product_display", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L60", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_dibang_bridge_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_inventory_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_io_order_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_site_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_transport_site_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L70", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_inventory_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "target": "date", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L227", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L232", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L275", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "planlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "plancontractgaplistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "target": "plansidecontractsupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L587", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "plancreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L587", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L587", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L587", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L587", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "createfromcontractrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L919", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L919", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L919", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L919", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L988", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L988", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L988", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L988", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L988", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "planproductcertsupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "hazardcertreadybody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1235", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "planarrangeinforead", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1435", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1435", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1435", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1435", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "planarchivebody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1497", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "plandriverfeedbackupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "plansitefeedbackupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1643", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1643", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1643", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1654", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "target": "planinboundsliptemplatesave", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1654", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1654", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1654", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1677", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1677", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1677", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1688", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "target": "plandeliverysliptemplatesave", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1688", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1688", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1688", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1722", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "target": "plansubpacksliptemplatesave", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1722", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1722", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1722", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1759", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1759", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1759", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1798", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1798", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1798", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "plplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1798", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L171", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L188", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L199", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L332", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L441", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "planlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L463", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "plancontractgaplistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L553", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L595", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L600", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L690", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L697", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L701", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L827", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L830", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L832", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L836", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "plplanproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L886", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "planarrangeinforead", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1250", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1267", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1532", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1600", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1634", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_112", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_127", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_163", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L163", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_196", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L196", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_676", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L676", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1178", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1178", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1246", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1440", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1440", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "callee": "resolve_product_display_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L113", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L123", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L128", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L129", "receiver": "today"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L133", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L134", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "isdigit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L141", "receiver": "suffix"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L164", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L168", "receiver": "_SUBPACK_SLIP_NO_CANONICAL_PATTERN"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "groups", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L170", "receiver": "matched"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L173", "receiver": "_SUBPACK_SLIP_NO_BARE_PATTERN"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "groups", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L175", "receiver": "matched"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L179", "receiver": "pattern"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "groups", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L181", "receiver": "matched"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "callee": "startswith", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L189", "receiver": "normalized"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "callee": "isdigit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L192", "receiver": "suffix"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L197", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "existing", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L199"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "normalized", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L202"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "normalized", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L203"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L205", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L206", "receiver": "today"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L209", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "isnot", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "max_seq", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "prefix", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "next_no", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L223"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "next_no", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L224"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "callee": "determine_plan_type", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L229", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L238", "receiver": "labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L243", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "exists", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L264", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L264", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L269", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L269", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L269", "receiver": "keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L277", "receiver": "keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L278", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L279", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L279", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L280", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L315", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L315", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L316", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L316"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L322", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L324", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L326", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L327", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L329", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L329", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L330", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L337", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L352", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L352", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L352", "receiver": "customer_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L355", "receiver": "product_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L360", "receiver": "license_plate"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "plan_has_hazard_product_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "plan_has_incomplete_hazard_cert_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L374", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L376", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L376"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L379", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L383", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L383", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L383", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L383", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L390", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L390", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L390"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L392", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L399", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L399", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "fetch_hazard_flags_map", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L402", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_crm_product_alias_maps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L407", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_brand_qtys_by_plan_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L417", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L422", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L423", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L429", "receiver": "PlanProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L430", "receiver": "brand_qtys_by_pp"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432", "receiver": "PlanArchiveBrandQtyItem"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L436", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L448", "receiver": "enriched_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L450", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L452", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L455", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L461", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L474", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L474", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L475", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L475", "receiver": "contract_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L475", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L481", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L481", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L485", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "group_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L488", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L488", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L488"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L492", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L493"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L492", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L497", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L502", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L502"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L508", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L510", "receiver": "counts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L539", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L539", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "callee": "list_plan_contract_gaps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L540", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L565", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L566", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "callee": "update_plan_side_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L567", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L577", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L592", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L592", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L598", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L647", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L652", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L661", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L663", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L665", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L666", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_create_full", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L677", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L678", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L678", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_plan_party_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L679", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L695", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L698", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L738", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L745", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L746", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L750", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L755", "receiver": "prod"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L756", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L765", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L766", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "replace_plan_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L768", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "apply_vehicle_prefill_to_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L779", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L789", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L790", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L792", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L813", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L813", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L817", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L817", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L817"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L822", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "assert_contract_selectable_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L824", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L833", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L847", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L850", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L852", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L867", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L871", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "CrmContractProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L871"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L881", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L887", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L906", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L908", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L909", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L924", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L924", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L925", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "id", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L925"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L928", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L928", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L928"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "fetch_hazard_flags_map", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L937", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_brand_qtys_by_plan_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L942", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L950", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "hazard_map", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L954"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L956", "receiver": "PlanProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "product", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L956"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L957", "receiver": "brand_qtys_by_pp"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L959", "receiver": "PlanArchiveBrandQtyItem"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "x", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L959"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L963", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "is_toxic", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L965"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "is_explosive", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L966"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "brand_qtys", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L967"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L970", "receiver": "enriched_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "item", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L970"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L972", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "enriched_products", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L973"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L974", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "id", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L976"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L974", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "id", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L975"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "supplier_contracts", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L977"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "demander_contracts", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L978"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "result", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L979"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L994", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L994", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L995", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L998", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1001", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1005", "receiver": "update_data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1024", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1024", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1029", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1029", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "validate_plan_party_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1039", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "replace_plan_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1050", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1060", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1060", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1069", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1069"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_hazard_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1076", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1086", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1086", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1086"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1093", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1101", "receiver": "cert_by_product_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1106", "receiver": "prod"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1115", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1124", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1125", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_hazard_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1127", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "clear_hazard_cert_ready", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1131", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1134", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1134"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "sync_transport_prefill_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1145", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "clear_draft_transport_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1155", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1163", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1164", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1165", "receiver": "PlanRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1179", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "update_plan_product_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1188", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1190", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1190", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1190"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1198", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1211", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1211", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "set_hazard_cert_ready", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1213", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1220", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1222", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1222", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1222"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1230", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1236", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1247", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1247", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1248", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1255", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1255", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1255"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1270", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransportSiteLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1270"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1277", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1283", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1283"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_transport_site_link_read_from_row", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1292", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1294", "receiver": "product_name_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1300", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransportDbLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1300"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1313", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1313", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1313"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1321", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1321", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "DbInboundOutbound", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1321"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1329", "receiver": "inventory_records"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_transport_inventory_link_read", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get_active_io_order_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1347", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "TransportIoOrderBrief", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1348", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_io_order_site_url", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1353", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "TransportSiteLinkRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1358", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_io_order_site_url", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1365", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1390", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1390", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1391", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1394", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1396", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1398", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1402", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1403", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1414", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1414", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1415", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1418", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1420", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1424", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1425", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1441", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1441", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1442", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1445", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1448", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1452", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1452", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1452"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "revoke_regeneratable_dibang_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1462", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1469", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1469"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "revoke_site_links_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1470", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "void_io_orders_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1479", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1486", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1487", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1503", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1503", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1504", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1507", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1513", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1513", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1513"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "validate_hazard_cert_ready_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1522", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1526", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1531", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_product_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1534", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_inventory_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1537", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_freight", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1545", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1550", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1558", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1568", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1579", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1579", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1580", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "apply_plan_driver_feedback", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1581", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1588", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1599", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1611", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1611", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1612", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "apply_plan_site_feedback", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1613", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1621", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1622", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1633", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1648", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1648", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1649", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1660", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1660", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1661", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1663", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1665", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1668", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1682", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1682", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1683", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1694", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1694", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1695", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1697", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1699", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1702", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1716", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1716", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1717", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1728", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1728", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1729", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1731", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1734", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1743", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1743", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1744", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1746", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1749", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1764", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1764", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1765", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1768", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1770", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1772", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1774", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "user_info_from_context", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1774", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1778", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1778", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1778"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1784", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1784", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "PlPlanTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1784"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1790", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1800", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1800", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1800"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1809", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "assert_pl_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1810", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1810"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_side_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/53f4d3c74ab4ebf0903b62c538e128c10763a474b3a78dce51fae6f7e13587ea.json b/backend/graphify-out/cache/ast/v0.9.4/53f4d3c74ab4ebf0903b62c538e128c10763a474b3a78dce51fae6f7e13587ea.json new file mode 100644 index 000000000..85f2c830c --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/53f4d3c74ab4ebf0903b62c538e128c10763a474b3a78dce51fae6f7e13587ea.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "label": "pl_paste_recognize_service.py", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "label": "_conflict_map()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L22"}, {"id": "conflictaction", "label": "ConflictAction", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "label": "_find_personnel_by_id_card()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "plpersonnel", "label": "PlPersonnel", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "label": "_find_vehicle_by_plate()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L51"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "label": "_get_personnel()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L68"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "label": "_get_vehicle()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L85"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "label": "_resolve_personnel()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L100"}, {"id": "pastepersonnelin", "label": "PastePersonnelIn", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "label": "_resolve_vehicle()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L154"}, {"id": "pastevehiclein", "label": "PasteVehicleIn", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "label": "commit_paste_recognize()", "file_type": "code", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L229"}, {"id": "pastecommitbody", "label": "PasteCommitBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}, {"id": "pastecommitresult", "label": "PasteCommitResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "app_schemas_pl_paste_recognize", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "app_services_pl_personnel_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "target": "conflictaction", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "target": "conflictaction", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "target": "plpersonnel", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "target": "plvehicle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "target": "plpersonnel", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "target": "plvehicle", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "target": "pastepersonnelin", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "target": "conflictaction", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "target": "pastevehiclein", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "target": "conflictaction", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "pastecommitbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "pastecommitresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "target": "plpersonnel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L184", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "target": "plvehicle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L211", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L237", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L253", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "target": "pastecommitresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_paste_recognize_service.py", "source_location": "L321", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L25", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L29", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "callee": "upper", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L41", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L41", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "callee": "PlPersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L41"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L54", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L58", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L58", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "callee": "PlVehicle", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L58"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L72", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "callee": "PlPersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L72"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L81", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L87", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L87", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "callee": "PlVehicle", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L87"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L110", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L116", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "upper", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L138", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L141", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "upper", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L149", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L150", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L163", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L165", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L167", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L170", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L170", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "PlCarrier", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L170"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L186", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L192", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L196", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L198", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L207", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L209", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L224", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L225", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L238", "receiver": "cmap"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L246", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L258", "receiver": "cmap"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L268", "receiver": "cmap"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L278", "receiver": "cmap"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L284", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "VehiclePersonnelRow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L285", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L287", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L288", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L294", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "VehiclePersonnelRow", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L295", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L297", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "save_vehicle_personnel", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L304", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L316", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py", "source_location": "L319", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_commit_paste_recognize", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_conflict_map", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_personnel_by_id_card", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_find_vehicle_by_plate", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_personnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_get_vehicle", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_personnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_paste_recognize_service_resolve_vehicle"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/5bd07ff51cc6d0458d06c3e80615ed09ee2e8856f26208e761f96ab5954618e9.json b/backend/graphify-out/cache/ast/v0.9.4/5bd07ff51cc6d0458d06c3e80615ed09ee2e8856f26208e761f96ab5954618e9.json new file mode 100644 index 000000000..049eae635 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/5bd07ff51cc6d0458d06c3e80615ed09ee2e8856f26208e761f96ab5954618e9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "label": "duty_models.py", "file_type": "code", "source_file": "app/models/duty_models.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyday", "label": "DutyDay", "file_type": "code", "source_file": "app/models/duty_models.py", "source_location": "L31"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyslot", "label": "DutySlot", "file_type": "code", "source_file": "app/models/duty_models.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyassignment", "label": "DutyAssignment", "file_type": "code", "source_file": "app/models/duty_models.py", "source_location": "L75"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_rationale_1", "label": "\u503c\u73ed\u6392\u73ed\u6a21\u578b \u2014 docs/superpowers/specs/2026-08-14-duty-schedule-design.md", "file_type": "rationale", "source_file": "app/models/duty_models.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyday", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyslot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyslot", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyassignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyassignment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/duty_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyassignment", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyday", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_duty_models_dutyslot"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/6a868b319f6884d79b898d827288ad2695fcc36e84547bbe7bff9891b92b7b10.json b/backend/graphify-out/cache/ast/v0.9.4/6a868b319f6884d79b898d827288ad2695fcc36e84547bbe7bff9891b92b7b10.json new file mode 100644 index 000000000..afb3b592e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/6a868b319f6884d79b898d827288ad2695fcc36e84547bbe7bff9891b92b7b10.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "label": "_resolve_list_product_name()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L104"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "label": "_resolve_create_date()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L120"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "label": "_generate_plan_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L124"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "label": "_format_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L156"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "label": "_normalize_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L160"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "label": "_subpack_slip_no_seq()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L185"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "label": "_ensure_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L193"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "label": "_determine_plan_type()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L225"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "label": "_get_plan_type_label()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L230"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "label": "_generate_notify_message()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L239"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "label": "_plan_product_name_exists()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L259"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "label": "_plan_plate_match()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L273"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "label": "list_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L283"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "label": "count_plans_by_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L465"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "label": "list_contract_gaps()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L514"}, {"id": "plancontractgaplistresponse", "label": "PlanContractGapListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "label": "create_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L560"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "label": "create_plan_full()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L644"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "label": "create_from_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L778"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "label": "get_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L892"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "label": "update_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L961"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "label": "patch_plan_product_certs()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1145"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "label": "patch_plan_hazard_cert_ready()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1177"}, {"id": "hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1208"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "label": "get_plan_arrange_info()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1214"}, {"id": "planarrangeinforead", "label": "PlanArrangeInfoRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "label": "mark_plan_wait_notice()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1357"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "label": "cancel_plan_wait_notice()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1381"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1408"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "label": "archive_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1470"}, {"id": "planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "label": "update_plan_driver_feedback()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1546"}, {"id": "plandriverfeedbackupdatebody", "label": "PlanDriverFeedbackUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "label": "update_plan_site_feedback()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1577"}, {"id": "plansitefeedbackupdatebody", "label": "PlanSiteFeedbackUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "label": "get_inbound_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1616"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "label": "save_inbound_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1627"}, {"id": "planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "label": "get_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1650"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "label": "save_delivery_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1661"}, {"id": "plandeliverysliptemplatesave", "label": "PlanDeliverySlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "label": "get_subpack_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1684"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "label": "save_subpack_slip_template()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1695"}, {"id": "plansubpacksliptemplatesave", "label": "PlanSubpackSlipTemplateSave", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "label": "delete_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1732"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_110", "label": "\u5217\u8868\u5c55\u793a\u7528\uff1a\u4f18\u5148 CRM \u6807\u51c6\u540d\uff08\u8be6\u60c5\u4ecd\u8fd4\u56de\u5e93\u5185 product_name\uff0c\u4ee5\u4fbf\u7f16\u8f91\u53cd\u63a8\u522b\u540d\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L110"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_125", "label": "\u751f\u6210\u8ba1\u5212\u7f16\u53f7 POYYYYMMDD###\uff08\u5f53\u65e5 3 \u4f4d\u5e8f\u53f7\uff0c\u6bcf\u65e5\u91cd\u7f6e\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L125"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_161", "label": "\u5c06\u5386\u53f2\u5206\u88c5\u5355\u53f7\u7edf\u4e00\u4e3a NO:SXFZYYYYMMDD-###", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_194", "label": "\u5206\u914d\u5206\u88c5\u5355\u53f7 NO:SXFZYYYYMMDD-###\uff08\u6309\u79df\u6237\u6bcf\u65e5\u9012\u589e\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L194"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_649", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u4f9b\u65b9/\u9700\u65b9 + \u4ea7\u54c1\u5e93\u4ea7\u54c1 + \u53ef\u9009\u9884\u9009\u8f66\u8f86\uff0c\u4e0d\u81ea\u52a8\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L649"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1151", "label": "\u66f4\u65b0\u8ba1\u5212\u5371\u5316\u54c1\u4ea7\u54c1\u8bc1\u4e66\uff08\u8d2d\u4e70\u8bc1/\u8fd0\u8f93\u8bc1/\u5408\u6cd5\u4f7f\u7528\u8bc1\u660e\uff0c\u4e0d\u89e6\u53d1\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1151"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1219", "label": "\u83b7\u53d6\u8ba1\u5212\u5df2\u5b89\u6392\u8fd0\u8f93\u540e\u7684\u53f8\u673a\u94fe\u63a5\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054\uff08\u4f9b\u67e5\u770b\u5f39\u7a97\u590d\u5236\u7b80\u8ff0/\u4e8c\u7ef4\u7801\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1219"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1413", "label": "\u4f5c\u5e9f\u8fd0\u8f93\u8ba1\u5212\uff1a\u53d6\u6d88\u8ddf\u8fdb\u72b6\u6001\u3001\u4f5c\u5e9f\u5173\u8054\u5730\u78c5\u51fa\u5165\u5e93\u5355\u3001\u53d6\u6d88\u8fd0\u8f93\u5355\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1413"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_delete_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_contract_gap", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_product_display", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_dibang_bridge_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_inventory_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_io_order_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_site_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_transport_site_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_inventory_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L70", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "target": "date", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L124", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L124", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L160", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L185", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L225", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L273", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "planlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L465", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L465", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L465", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L514", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L514", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L514", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L514", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L514", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "plancontractgaplistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L514", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L560", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "plancreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L560", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L560", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L560", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L560", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L644", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L644", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L644", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L644", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L644", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "createfromcontractrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L892", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L892", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L892", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L892", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L961", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L961", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L961", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L961", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L961", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "planproductcertsupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1145", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "hazardcertreadybody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1208", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "planarrangeinforead", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1357", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1357", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1357", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1357", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1408", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "planarchivebody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "plandriverfeedbackupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1546", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "plansitefeedbackupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1616", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1616", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1616", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "target": "planinboundsliptemplatesave", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1650", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1650", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1650", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1661", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "target": "plandeliverysliptemplatesave", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1661", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1661", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1661", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1684", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1684", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1684", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "target": "plansubpacksliptemplatesave", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1711", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1732", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1732", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1732", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "target": "plplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L197", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L329", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L330", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L439", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "target": "planlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L461", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "target": "plancontractgaplistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L551", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L568", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L663", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L670", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L674", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L800", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L803", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L805", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L809", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "target": "plplanproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L859", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "planarrangeinforead", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1223", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1505", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1573", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1607", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_110", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_125", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L125", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_161", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_194", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_649", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L649", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1151", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1151", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1219", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1219", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1413", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1413", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "callee": "resolve_product_display_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L111", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L126", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L127", "receiver": "today"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L131", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "callee": "isdigit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L139", "receiver": "suffix"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L162", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L166", "receiver": "_SUBPACK_SLIP_NO_CANONICAL_PATTERN"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "groups", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L168", "receiver": "matched"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L171", "receiver": "_SUBPACK_SLIP_NO_BARE_PATTERN"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "groups", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L173", "receiver": "matched"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "match", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L177", "receiver": "pattern"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "callee": "groups", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L179", "receiver": "matched"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "callee": "startswith", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L187", "receiver": "normalized"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "callee": "isdigit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L190", "receiver": "suffix"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "existing", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L197"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "normalized", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L200"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "normalized", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L201"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L203", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L204", "receiver": "today"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L207", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "isnot", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L210", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "max_seq", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L218"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "prefix", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L218"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "next_no", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L221"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "next_no", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L222"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "callee": "determine_plan_type", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L236", "receiver": "labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L241", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "exists", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L262", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L262", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L267", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L267", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L267", "receiver": "keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L275", "receiver": "keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L276", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L277", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L277", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L278", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L278", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L313", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L313", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L314", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L314"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L320", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L322", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L325", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L326", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L326", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L327", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L327", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L335", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L350", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L350", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L350", "receiver": "customer_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L353", "receiver": "product_name"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L358", "receiver": "license_plate"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "plan_has_hazard_product_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L369", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "plan_has_incomplete_hazard_cert_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L372", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L374", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L374"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L377", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L381", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L388", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L388", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L388"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L390", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L397", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L397", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "fetch_hazard_flags_map", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L400", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_crm_product_alias_maps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_brand_qtys_by_plan_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L415", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L420", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L421", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L427", "receiver": "PlanProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L428", "receiver": "brand_qtys_by_pp"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L430", "receiver": "PlanArchiveBrandQtyItem"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L434", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L446", "receiver": "enriched_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L448", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L450", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L453", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L459", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L472", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L472", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L473", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L473", "receiver": "contract_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L473", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L479", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L479", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L483", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "group_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L486", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L486", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L486"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L490", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L491"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L490", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L495", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L500", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L500"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L506", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L508", "receiver": "counts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L537", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L537", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "callee": "list_plan_contract_gaps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L538", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L565", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L571", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L574", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L620", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L625", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L634", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L636", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L638", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L639", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_create_full", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L650", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L651", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L651", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_plan_party_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L652", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L666", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L668", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L711", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L718", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L719", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L723", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L728", "receiver": "prod"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L738", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L739", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "replace_plan_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L741", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "apply_vehicle_prefill_to_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L752", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L762", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L763", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L765", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L786", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L786", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L790", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L790", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L790"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L795", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "assert_contract_selectable_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L797", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L806", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L820", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L823", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L825", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L840", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L844", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "CrmContractProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L844"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L854", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L860", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L879", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L881", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L882", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L897", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L897", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L898", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "id", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L898"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "fetch_hazard_flags_map", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L910", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_brand_qtys_by_plan_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L915", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L923", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "hazard_map", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L927"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L929", "receiver": "PlanProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "product", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L929"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L930", "receiver": "brand_qtys_by_pp"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L932", "receiver": "PlanArchiveBrandQtyItem"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "x", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L932"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L936", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "is_toxic", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L938"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "is_explosive", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L939"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "brand_qtys", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L940"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L943", "receiver": "enriched_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "item", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L943"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L945", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "enriched_products", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L946"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L947", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "id", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L949"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L947", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "id", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L948"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "supplier_contracts", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L950"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "demander_contracts", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L951"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "result", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L952"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L967", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L967", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L968", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L971", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L974", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L978", "receiver": "update_data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L997", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L997", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1002", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1002", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "validate_plan_party_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1012", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "replace_plan_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1023", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1033", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1033", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1042", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1042"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_hazard_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1049", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1059", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1059", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1059"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1066", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1074", "receiver": "cert_by_product_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1079", "receiver": "prod"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1088", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1097", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1098", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_hazard_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1100", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "clear_hazard_cert_ready", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1102", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1107", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1107"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "sync_transport_prefill_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "clear_draft_transport_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1136", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1137", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1138", "receiver": "PlanRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1152", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "update_plan_product_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1163", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1163", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1163"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1171", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1184", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1184", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1185", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "set_hazard_cert_ready", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1186", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1195", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1195"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1203", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1209", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1220", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1220", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1221", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1228", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1228", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1228"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1239", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1243", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1243", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransportSiteLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1243"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1250", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1256", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1256"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_transport_site_link_read_from_row", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1265", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1267", "receiver": "product_name_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1273", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlTransportDbLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1273"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1286", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1286", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1286"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1294", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1294", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "DbInboundOutbound", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1294"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1302", "receiver": "inventory_records"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_transport_inventory_link_read", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1303", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "get_active_io_order_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1315", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1320", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "TransportIoOrderBrief", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1321", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_io_order_site_url", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1326", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "TransportSiteLinkRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1331", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_io_order_site_url", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1363", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1364", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1367", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1369", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1371", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1375", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1376", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1387", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1387", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1388", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1391", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1393", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1397", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1398", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1414", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1414", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1415", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1418", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1421", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1425", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1425", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1425"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "revoke_regeneratable_dibang_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1435", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1442", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1442"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "revoke_site_links_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1443", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "void_io_orders_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1452", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1459", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1460", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1476", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1476", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1477", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1480", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1486", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1486", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1486"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "validate_hazard_cert_ready_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1495", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1499", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1504", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_product_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1507", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_inventory_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1510", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_freight", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1518", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1523", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1531", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1541", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1552", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1552", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1553", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "apply_plan_driver_feedback", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1554", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1561", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1572", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1584", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1584", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "apply_plan_site_feedback", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1586", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1594", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1595", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1606", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1621", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1621", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1622", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1633", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1634", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1636", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1638", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1641", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1655", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1655", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1656", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1667", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1667", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1668", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1670", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1675", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1689", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1689", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1690", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1701", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1701", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1702", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1704", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1707", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1716", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1716", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1717", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1719", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1722", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1737", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1737", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1738", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1741", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1743", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1745", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "assert_row_deletable_by_creator", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1747", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "user_info_from_context", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1747", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1751", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1751", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1751"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1757", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1757", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "PlPlanTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1757"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1763", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1773", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1773", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1773"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1782", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "assert_pl_row_in_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1783", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1783"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_driver_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_cancel_plan_wait_notice", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_from_contract", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_delete_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_delivery_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_inbound_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_subpack_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_mark_plan_wait_notice", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_product_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_delivery_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_inbound_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_save_subpack_slip_template", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_driver_feedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan_site_feedback"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/7069b3b5dd6f40ef62357735375b9f8ea26adeaf9c06ebc2a28bb9ddf62283e5.json b/backend/graphify-out/cache/ast/v0.9.4/7069b3b5dd6f40ef62357735375b9f8ea26adeaf9c06ebc2a28bb9ddf62283e5.json new file mode 100644 index 000000000..7ca4de88d --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/7069b3b5dd6f40ef62357735375b9f8ea26adeaf9c06ebc2a28bb9ddf62283e5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "label": "pl_cert_required_service.py", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_is_huolala_trailer_no", "label": "is_huolala_trailer_no()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L37"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_show_trailer_cert_slots", "label": "should_show_trailer_cert_slots()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L41"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_require_trailer_certs", "label": "should_require_trailer_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L46"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "label": "match_required_cert_name()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L52"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "label": "_cert_row_complete()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L61"}, {"id": "certrow", "label": "CertRow", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "label": "_find_cert_for_required()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L77"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "label": "_missing_field_labels()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L97"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "label": "collect_required_cert_errors()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L116"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "label": "get_required_personnel_cert_names()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L141"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "label": "validate_personnel_type_role_compat()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L152"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "label": "validate_personnel_required_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L163"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "label": "validate_self_vehicle_required_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L187"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "label": "validate_carrier_vehicle_required_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L211"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "label": "validate_vehicle_personnel_affiliation()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L221"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py"}, {"id": "vehiclepersonnelrow", "label": "VehiclePersonnelRow", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "label": "validate_vehicle_personnel_cert_links()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L255"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "label": "validate_vehicle_save_certs()", "file_type": "code", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L294"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_rationale_216", "label": "\u4e09\u65b9\u8f66\u8f86\u8bc1\u4ef6\u4e0d\u5f3a\u5236\uff1b\u4fdd\u7559\u51fd\u6570\u4f9b\u517c\u5bb9\u8c03\u7528\uff0c\u6052\u4e3a\u901a\u8fc7\u3002", "file_type": "rationale", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L216"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "app_services_pl_cert_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_is_huolala_trailer_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_show_trailer_cert_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_require_trailer_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "target": "certrow", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "target": "certrow", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "target": "certrow", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L152", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L163", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L163", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L211", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L211", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "target": "vehiclepersonnelrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L255", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L255", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "vehiclepersonnelrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L255", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "vehiclepersonnelrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_show_trailer_cert_slots", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_is_huolala_trailer_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_require_trailer_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_show_trailer_cert_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L92", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L131", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L134", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L178", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_require_trailer_certs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L198", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L275", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L305", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_rationale_216", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_cert_required_service.py", "source_location": "L216", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_is_huolala_trailer_no", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L38", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_show_trailer_cert_slots", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L42", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_require_trailer_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L47", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L53", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L62"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L63", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L63", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L64", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L64", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L84"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L85", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L85", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L86", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L86", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L101"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L102", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L102", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L103", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L103", "receiver": "cert"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L111", "receiver": "missing"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "callee": "VEHICLE_PART_HEAD", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L126"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "callee": "VEHICLE_PART_TRAILER", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L128"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L137", "receiver": "errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L137", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "callee": "PERSONNEL_ESCORT_REQUIRED", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L144"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "callee": "PERSONNEL_DRIVER_REQUIRED", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L146"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "callee": "PERSONNEL_BOTH_REQUIRED", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L148"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "callee": "PERSONNEL_BOTH_REQUIRED", "is_member_call": false, "indirect": true, "context": "return", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L149"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L160", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L170", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L174", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L176", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L183", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L193", "receiver": "errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "SELF_HEAD_REQUIRED", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L195"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "VEHICLE_TYPE_SELF", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L198"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L199", "receiver": "errors"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "SELF_TRAILER_REQUIRED", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L201"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L207", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L227", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "VEHICLE_TYPE_SELF", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L228"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "VEHICLE_TYPE_CARRIER", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L228"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L232", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L236", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L236", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "PlPersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L236"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L246", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L248", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L249", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L261", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L265", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L265", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "PlPersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L265"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "list_owner_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L276", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L277", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L285", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L286", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L289", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L303", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "callee": "VEHICLE_TYPE_SELF", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L306"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs", "callee": "VEHICLE_TYPE_CARRIER", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py", "source_location": "L306"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_cert_row_complete", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_collect_required_cert_errors", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_find_cert_for_required", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_get_required_personnel_cert_names", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_is_huolala_trailer_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_match_required_cert_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_missing_field_labels", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_require_trailer_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_should_show_trailer_cert_slots", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_carrier_vehicle_required_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_required_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_personnel_type_role_compat", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_self_vehicle_required_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_affiliation", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_personnel_cert_links", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_cert_required_service_validate_vehicle_save_certs"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/70838c89251a5b585b61317a1e97d3d2e18e0d97bd62e66ecc2cc70dd81b5d3c.json b/backend/graphify-out/cache/ast/v0.9.4/70838c89251a5b585b61317a1e97d3d2e18e0d97bd62e66ecc2cc70dd81b5d3c.json new file mode 100644 index 000000000..b6be08b7d --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/70838c89251a5b585b61317a1e97d3d2e18e0d97bd62e66ecc2cc70dd81b5d3c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "label": "base_data.py", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierbase", "label": "CarrierBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L19"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierqualificationbase", "label": "CarrierQualificationBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L27"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L49"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierauditreject", "label": "CarrierAuditReject", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L71"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L77"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "label": "carrier_to_read()", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L96"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclepersonnelrow", "label": "VehiclePersonnelRow", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L132"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certrow", "label": "CertRow", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L143"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certread", "label": "CertRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L158"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclebase", "label": "VehicleBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L174"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L190"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L197"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L214"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledetailread", "label": "VehicleDetailRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L229"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelbase", "label": "PersonnelBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L240"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelcreate", "label": "PersonnelCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L264"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelupdate", "label": "PersonnelUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L269"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelread", "label": "PersonnelRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L287"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personneldetailread", "label": "PersonnelDetailRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L302"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverbase", "label": "DriverBase", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L312"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L325"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L329"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverread", "label": "DriverRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L343"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverlistresponse", "label": "DriverListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L356"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L366"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledriverread", "label": "VehicleDriverRead", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L373"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierlistresponse", "label": "CarrierListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L383"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclelistresponse", "label": "VehicleListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L388"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnellistresponse", "label": "PersonnelListResponse", "file_type": "code", "source_file": "app/schemas/pl/base_data.py", "source_location": "L393"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e Schema\uff08\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u4eba\u5458\u3001\u8bc1\u4e66\uff09", "file_type": "rationale", "source_file": "app/schemas/pl/base_data.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "app_services_pl_carrier_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierqualificationbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierqualificationbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carriercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carriercreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carriercreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierqualificationbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierauditreject", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierauditreject", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierqualificationbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclepersonnelrow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclepersonnelrow", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certrow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certrow", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certrow", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclebase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclebase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclecreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclecreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L197", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L197", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledetailread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledetailread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L264", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelcreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L264", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L269", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L269", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personneldetailread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personneldetailread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_drivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L325", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_drivercreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L325", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L329", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L329", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L343", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L343", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L356", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L356", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledrivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledrivercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledriverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledriverread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclelistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclelistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnellistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L393", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnellistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L393", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/base_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "callee": "carrier_qualification_complete", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L97", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "callee": "carrier_agreement_expired", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L98", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrier_to_read", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierauditreject", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carriercreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierlistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierqualificationbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_carrierupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_certrow", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_drivercreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverlistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_driverupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelcreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personneldetailread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnellistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_personnelupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclebase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclecreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledetailread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledrivercreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicledriverread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclelistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehiclepersonnelrow", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_vehicleupdate"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/762caa6d084015d368538e687633b064bbefd73b7c91b225249d9a949b361fca.json b/backend/graphify-out/cache/ast/v0.9.4/762caa6d084015d368538e687633b064bbefd73b7c91b225249d9a949b361fca.json new file mode 100644 index 000000000..e1ce22ae3 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/762caa6d084015d368538e687633b064bbefd73b7c91b225249d9a949b361fca.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "label": "paste_recognize.py", "file_type": "code", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_conflictaction", "label": "ConflictAction", "file_type": "code", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastepersonnelin", "label": "PastePersonnelIn", "file_type": "code", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L15"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastevehiclein", "label": "PasteVehicleIn", "file_type": "code", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L24"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitbody", "label": "PasteCommitBody", "file_type": "code", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L34"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitresult", "label": "PasteCommitResult", "file_type": "code", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212 - \u4e09\u65b9\u7c98\u8d34\u8bc6\u522b\u63d0\u4ea4 Schema", "file_type": "rationale", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_conflictaction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_conflictaction", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastepersonnelin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastepersonnelin", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastevehiclein", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastevehiclein", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitresult", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/paste_recognize.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_conflictaction", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastecommitresult", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastepersonnelin", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_paste_recognize_pastevehiclein"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/7f2d45991608e35ed30c870095c6ff893a2061295082b1b4181140e72439fd67.json b/backend/graphify-out/cache/ast/v0.9.4/7f2d45991608e35ed30c870095c6ff893a2061295082b1b4181140e72439fd67.json new file mode 100644 index 000000000..1a6d08ca8 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/7f2d45991608e35ed30c870095c6ff893a2061295082b1b4181140e72439fd67.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "label": "pl_plan_contract_gap.py", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "label": "compute_contract_gap_sides()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L23"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "label": "side_is_exempt()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L38"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "label": "_side_contract_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L42"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "label": "_supplier_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L53"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "label": "_demander_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L66"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "label": "plan_has_contract_gap_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L79"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "label": "build_plan_contract_gap_read()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plancontractgapread", "label": "PlanContractGapRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "label": "list_plan_contract_gaps()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L113"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_80", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u8ba1\u5212\u5b58\u5728\u5408\u540c\u7f3a\u53e3\uff08\u975e\u5185\u7f6e\u4fa7\u7f3a\u5c11\u6709\u6548 pl_plan_contract \u5173\u8054\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L80"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "plancontractgapread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L62", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L90", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractgapread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L131", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L142", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L189", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_80", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L80", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L31", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L32", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L33", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L34", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L39", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L43", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L44", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L44", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L54"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L58", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "PLAN_CONTRACT_SIDE_SUPPLIER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L62"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L67"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L68", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L69", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L71", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L73", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "PLAN_CONTRACT_SIDE_DEMANDER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L75"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L81", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L127", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L127"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L133", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L133"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L136", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L138", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L138", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L145", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L149", "receiver": "customer_keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L151", "receiver": "kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L154", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L155", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L155", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L166", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L168", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L170", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L171", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L172", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L172", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L173", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L173", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L177", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L177", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L177", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L178", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L180", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L183", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L187", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L188", "receiver": "items"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/7f93087d723da02d189f822810735774d7cb82ad518231edd10acb7586012bbf.json b/backend/graphify-out/cache/ast/v0.9.4/7f93087d723da02d189f822810735774d7cb82ad518231edd10acb7586012bbf.json new file mode 100644 index 000000000..5f73be8dd --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/7f93087d723da02d189f822810735774d7cb82ad518231edd10acb7586012bbf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "label": "test_pl_plan_contract_gap.py", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", "label": "test_both_external_no_contracts_gaps_both()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L9"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "label": "test_internal_supplier_external_demander_missing_only_demander()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L19"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "label": "test_both_internal_no_gap()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L29"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", "label": "test_external_with_contracts_no_gap()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L39"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", "label": "test_empty_names_treated_as_non_internal_gap_both()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L49"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "label": "_compile()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L59"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", "label": "test_plan_has_contract_gap_exists_mentions_contract_and_internal_names()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L65"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "sqlalchemy_dialects", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "app_services_pl_plan_contract_gap", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L67", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", "callee": "compute_contract_gap_sides", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L10", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "callee": "compute_contract_gap_sides", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L20", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "callee": "INTERNAL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L21"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "callee": "compute_contract_gap_sides", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L30", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "callee": "INTERNAL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L31"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "callee": "INTERNAL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L32"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", "callee": "compute_contract_gap_sides", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L40", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", "callee": "compute_contract_gap_sides", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L50", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "callee": "compile", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L61", "receiver": "clause"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "callee": "dialect", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L61", "receiver": "mysql"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names", "callee": "plan_has_contract_gap_exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L66", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_compile", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_external_no_contracts_gaps_both", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_both_internal_no_gap", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_empty_names_treated_as_non_internal_gap_both", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_external_with_contracts_no_gap", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_internal_supplier_external_demander_missing_only_demander", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_plan_has_contract_gap_exists_mentions_contract_and_internal_names"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/94e54a61c8e7ec54e476d64ed55275dc3c75ca146d5b8d69ee39fc2ceebbf6ee.json b/backend/graphify-out/cache/ast/v0.9.4/94e54a61c8e7ec54e476d64ed55275dc3c75ca146d5b8d69ee39fc2ceebbf6ee.json new file mode 100644 index 000000000..f1add2087 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/94e54a61c8e7ec54e476d64ed55275dc3c75ca146d5b8d69ee39fc2ceebbf6ee.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "label": "duty.py", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyassignmentin", "label": "DutyAssignmentIn", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L13"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein", "label": "DutySlotSaveIn", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L19"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "label": "._split_work_plans()", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L31"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydaysavebody", "label": "DutyDaySaveBody", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L39"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutylinkbody", "label": "DutyLinkBody", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutygrabbody", "label": "DutyGrabBody", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L49"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydictensurebody", "label": "DutyDictEnsureBody", "file_type": "code", "source_file": "app/schemas/duty.py", "source_location": "L54"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_rationale_1", "label": "\u503c\u73ed\u6392\u73ed Pydantic schemas", "file_type": "rationale", "source_file": "app/schemas/duty.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyassignmentin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyassignmentin", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydaysavebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydaysavebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutylinkbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutylinkbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutygrabbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutygrabbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydictensurebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydictensurebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/duty.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py", "source_location": "L34"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py", "source_location": "L35", "receiver": "p"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py", "source_location": "L35", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "callee": "replace", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py", "source_location": "L35", "receiver": "v"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py", "source_location": "L35", "receiver": "p"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyassignmentin", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydaysavebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutydictensurebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutygrabbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutylinkbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_duty_dutyslotsavein_split_work_plans"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/a1f1c96584af9c8533b4330c8732d318f6644dd37b63cf01766815524c789748.json b/backend/graphify-out/cache/ast/v0.9.4/a1f1c96584af9c8533b4330c8732d318f6644dd37b63cf01766815524c789748.json new file mode 100644 index 000000000..54e4e78aa --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/a1f1c96584af9c8533b4330c8732d318f6644dd37b63cf01766815524c789748.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "label": "pl_plan_contract_gap.py", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "label": "compute_contract_gap_sides()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L27"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "label": "side_is_exempt()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L42"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "label": "_side_contract_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L46"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "label": "_supplier_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L57"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "label": "_demander_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L70"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "label": "plan_has_contract_gap_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "label": "build_plan_contract_gap_read()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "planproductread", "label": "PlanProductRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plancontractgapread", "label": "PlanContractGapRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "label": "_load_products_by_plan_ids()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L120"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "label": "list_plan_contract_gaps()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L141"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "label": "update_plan_side_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L228"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_84", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u8ba1\u5212\u5b58\u5728\u5408\u540c\u7f3a\u53e3\uff08\u975e\u5185\u7f6e\u4fa7\u7f3a\u5c11\u6709\u6548 pl_plan_contract \u5173\u8054\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_238", "label": "\u5355\u4fa7\u4fdd\u5b58\u8ba1\u5212\u5408\u540c\u5173\u8054\uff1b\u5141\u8bb8\u7a7a\u5217\u8868\uff0c\u4e0d\u5f3a\u5236\u975e\u5185\u7f6e\u4fa7\u5fc5\u987b\u6709\u5408\u540c\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L238"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L70", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "planproductread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "target": "planproductread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "plancontractgapread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L141", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L95", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractgapread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L101", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L170", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L283", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_84", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_238", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L238", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L35", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L36", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L38", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L43", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L47", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L48", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L48", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L58"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "PLAN_CONTRACT_SIDE_SUPPLIER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L66"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L71"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L73", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "PLAN_CONTRACT_SIDE_DEMANDER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L79"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L127", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L127", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L127"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L129", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L132", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L137", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L137", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L137", "receiver": "PlanProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L155", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L155"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L161"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L164", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L173", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L177", "receiver": "customer_keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L179", "receiver": "kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L182", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L182", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L183", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L183", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L194", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L196", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L198", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L199", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L200", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L200", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L201", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L201", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L205", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L206", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L208", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L208", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L211", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L216", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L217", "receiver": "items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L222", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "PLAN_CONTRACT_SIDE_SUPPLIER", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L241"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "PLAN_CONTRACT_SIDE_DEMANDER", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L241"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L242", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L244", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L244", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "_normalize_contract_links", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L247", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "assert_contract_selectable_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L261", "receiver": "resolved"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "replace_plan_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L283", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/b11b4a7dc26bc9988e9fbb53caab9725eeb4ffdd807a183086f8a724184625dd.json b/backend/graphify-out/cache/ast/v0.9.4/b11b4a7dc26bc9988e9fbb53caab9725eeb4ffdd807a183086f8a724184625dd.json new file mode 100644 index 000000000..bed97fd0e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/b11b4a7dc26bc9988e9fbb53caab9725eeb4ffdd807a183086f8a724184625dd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "label": "test_pl_trailer_cert_rules.py", "file_type": "code", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_complete_self_head_certs", "label": "_complete_self_head_certs()", "file_type": "code", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L15"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "label": "test_huolala_trailer_helpers()", "file_type": "code", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L23"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", "label": "test_self_huolala_skips_trailer_required_certs()", "file_type": "code", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L34"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", "label": "test_self_normal_trailer_requires_trailer_certs()", "file_type": "code", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L41"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_rationale_1", "label": "\u6302\u8f66\u53f7\u5206\u6d41\uff1a\u8d27\u62c9\u62c9\u514d\u6302\u8f66\u8bc1\uff1b\u81ea\u6709\u6b63\u5e38\u6302\u8f66\u53f7\u5f3a\u5236\uff1b\u4e09\u65b9\u4e0d\u5f3a\u5236\u3002", "file_type": "rationale", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "app_services_pl_cert_required_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_complete_self_head_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_complete_self_head_certs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_complete_self_head_certs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_pl_trailer_cert_rules.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "is_huolala_trailer_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L24", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "is_huolala_trailer_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L25", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "is_huolala_trailer_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L26", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "should_show_trailer_cert_slots", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L27", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "should_show_trailer_cert_slots", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L28", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "should_require_trailer_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L29", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "should_require_trailer_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L30", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "callee": "should_require_trailer_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L31", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", "callee": "validate_self_vehicle_required_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L35", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", "callee": "raises", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L42", "receiver": "pytest"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", "callee": "HTTPException", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L42"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs", "callee": "validate_self_vehicle_required_certs", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py", "source_location": "L43", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_complete_self_head_certs", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_huolala_trailer_helpers", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_huolala_skips_trailer_required_certs", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_trailer_cert_rules_test_self_normal_trailer_requires_trailer_certs"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/c682c26e2c612028f217b471f7cdda6319e3e15120d8d36fe34420d3a330c341.json b/backend/graphify-out/cache/ast/v0.9.4/c682c26e2c612028f217b471f7cdda6319e3e15120d8d36fe34420d3a330c341.json new file mode 100644 index 000000000..3fcca339d --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/c682c26e2c612028f217b471f7cdda6319e3e15120d8d36fe34420d3a330c341.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "label": "duty.py", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "label": "_enrich_assign_names()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L21"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py"}, {"id": "dutydaysavebody", "label": "DutyDaySaveBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "label": "month_summary()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L39"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "label": "day_detail()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "label": "duty_user_options()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L65"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "label": "ensure_duty_dict()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L77"}, {"id": "dutydictensurebody", "label": "DutyDictEnsureBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "label": "save_day()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L99"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "label": "set_link()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L114"}, {"id": "dutylinkbody", "label": "DutyLinkBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "label": "delete_assignment()", "file_type": "code", "source_file": "app/api/duty.py", "source_location": "L130"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_rationale_22", "label": "\u6307\u5b9a\u7528\u6237\u65f6\u8865\u5168 personName\uff08\u7528 nick_name\uff09\u3002", "file_type": "rationale", "source_file": "app/api/duty.py", "source_location": "L22"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_rationale_69", "label": "\u503c\u73ed\u53ef\u5b89\u6392\u4eba\u5458\uff1a\u4ec5\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\u4e0b\u7684\u542f\u7528\u7528\u6237\u3002", "file_type": "rationale", "source_file": "app/api/duty.py", "source_location": "L69"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_core_menu_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_core_response", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_schemas_duty", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_services", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "app_services_duty_schedule", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "target": "dutydaysavebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "target": "dutydaysavebody", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "target": "dutydictensurebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "target": "dutydaysavebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "target": "dutylinkbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L130", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L130", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_rationale_22", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_rationale_69", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/duty.py", "source_location": "L69", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L27", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L30", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "callee": "get_user", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L32", "receiver": "user_crud"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L34", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L45", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "callee": "get_month_summary", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L46", "receiver": "duty_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L47", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L56", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "date", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L58", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "strptime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L58", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L58", "receiver": "dutyDate"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L61", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "callee": "get_day_detail", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L61", "receiver": "duty_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L70", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "callee": "list_duty_staff_users", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L71", "receiver": "duty_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L73", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L82", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L83", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L83", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "ensure_dict_data", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L85", "receiver": "duty_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L92", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L93", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L95", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L95"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L104", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L108", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L110", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L110"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L120", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L121", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L121", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "set_link_status", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L123", "receiver": "duty_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L126", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L126"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L135", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L136", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L136", "receiver": "_user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "soft_delete_assignment", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L138", "receiver": "duty_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L139", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L141", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py", "source_location": "L141"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_day_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_delete_assignment", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_duty_user_options", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_enrich_assign_names", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_ensure_duty_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_month_summary", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_save_day", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_duty_set_link"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/decc65731c1c7d8d35322fb30b35326e818be1201fda2532d0247e88f78edf66.json b/backend/graphify-out/cache/ast/v0.9.4/decc65731c1c7d8d35322fb30b35326e818be1201fda2532d0247e88f78edf66.json new file mode 100644 index 000000000..cf79d67f8 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/decc65731c1c7d8d35322fb30b35326e818be1201fda2532d0247e88f78edf66.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "label": "pl_plan_contract_gap.py", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "label": "compute_contract_gap_sides()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L27"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "label": "side_is_exempt()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L42"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "label": "_side_contract_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L46"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "label": "_supplier_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L57"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "label": "_demander_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L70"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "label": "plan_has_contract_gap_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "label": "build_plan_contract_gap_read()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plancontractgapread", "label": "PlanContractGapRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "label": "list_plan_contract_gaps()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L117"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "label": "update_plan_side_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L202"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_84", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u8ba1\u5212\u5b58\u5728\u5408\u540c\u7f3a\u53e3\uff08\u975e\u5185\u7f6e\u4fa7\u7f3a\u5c11\u6709\u6548 pl_plan_contract \u5173\u8054\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_212", "label": "\u5355\u4fa7\u4fdd\u5b58\u8ba1\u5212\u5408\u540c\u5173\u8054\uff1b\u5141\u8bb8\u7a7a\u5217\u8868\uff0c\u4e0d\u5f3a\u5236\u975e\u5185\u7f6e\u4fa7\u5fc5\u987b\u6709\u5408\u540c\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L212"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L70", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "plancontractgapread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L94", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plancontractgapread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L135", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L144", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L236", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_84", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_212", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L212", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L35", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L36", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L38", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L43", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L47", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L48", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L48", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L58"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "callee": "PLAN_CONTRACT_SIDE_SUPPLIER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L66"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L71"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L73", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "callee": "PLAN_CONTRACT_SIDE_DEMANDER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L79"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L131", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L131"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "apply_pl_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L137", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L137"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L153", "receiver": "customer_keyword"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L155", "receiver": "kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L157", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L158", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L159", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L159", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L170", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L172", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L174", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L176", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L176", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L177", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L177", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L181", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L182", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L184", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L184", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L187", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L191", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L192", "receiver": "items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L214", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "PLAN_CONTRACT_SIDE_SUPPLIER", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L215"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "PLAN_CONTRACT_SIDE_DEMANDER", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L215"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L216", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L218", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L218", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "_normalize_contract_links", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L221", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "assert_contract_selectable_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L228", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L235", "receiver": "resolved"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "replace_plan_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L244", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "load_plan_contracts_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L254", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_demander_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_plan_has_contract_gap_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_contract_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_side_is_exempt", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_supplier_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/e28c2014ee953324fd6e785a289b4758b9c318ebdd68db91273ebdc71ce33086.json b/backend/graphify-out/cache/ast/v0.9.4/e28c2014ee953324fd6e785a289b4758b9c318ebdd68db91273ebdc71ce33086.json new file mode 100644 index 000000000..52b0686dc --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/e28c2014ee953324fd6e785a289b4758b9c318ebdd68db91273ebdc71ce33086.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "label": "duty_schedule.py", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "label": "DutyBizError", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L35"}, {"id": "valueerror", "label": "ValueError", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "label": "parse_hhmm()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L39"}, {"id": "time", "label": "time", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "label": "format_hhmm()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "label": "format_time_label()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L61"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "label": "split_work_plans()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L72"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "label": "join_work_plans()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L78"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "label": "build_dict_value_from_label()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "label": "ensure_dict_data()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L97"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "label": "_load_dict_label_map()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L164"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "label": "normalize_person_name()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L177"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "label": "new_access_token()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L186"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "label": "build_public_url()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L190"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "label": "_assignment_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L195"}, {"id": "dutyassignment", "label": "DutyAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "label": "_slot_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L204"}, {"id": "dutyslot", "label": "DutySlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "label": "_day_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L234"}, {"id": "dutyday", "label": "DutyDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "label": "_load_day_by_date()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L262"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "label": "_load_day_by_id()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L274"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "label": "_load_slots()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L282"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "label": "_load_assignments_for_slots()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L290"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "label": "_serialize_day()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L306"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "label": "empty_day_skeleton()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L320"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "label": "get_month_summary()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L331"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "label": "get_day_detail()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L354"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "label": "soft_delete_assignment()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L361"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "label": "set_link_status()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L381"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "label": "_count_active_assignments()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L397"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "label": "save_day()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L405"}, {"id": "dutydaysavebody", "label": "DutyDaySaveBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "label": "resolve_duty_staff_role_id()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L630"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "label": "list_duty_staff_users()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L656"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "label": "assert_user_is_duty_staff()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L693"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "label": "_list_public_users()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L726"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "label": "_resolve_grab_user()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L730"}, {"id": "sysuser", "label": "SysUser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "label": "get_public_page()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L750"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "label": "grab()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L771"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_1", "label": "\u503c\u73ed\u6392\u73ed\u9886\u57df\u670d\u52a1 \u2014 docs/superpowers/specs/2026-08-14-duty-schedule-design.md", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_631", "label": "\u6309\u56fa\u5b9a id \u67e5\u627e\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\uff1b\u627e\u4e0d\u5230\u518d\u6309\u89d2\u8272\u540d\u515c\u5e95\u3002", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", "source_location": "L631"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_657", "label": "\u672c\u79df\u6237\u542f\u7528\u4e14\u7ed1\u5b9a\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\u7684\u7528\u6237\uff08\u516c\u5f00\u9875 users / \u7ba1\u7406\u7aef options\uff09\u3002", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", "source_location": "L657"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "calendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "secrets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "pypinyin", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_models_duty_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_schemas_duty", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "target": "valueerror", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "target": "dutyassignment", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "dutyslot", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "dutyassignment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L204", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "dutyday", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "dutyslot", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "dutyassignment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "target": "dutyday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "target": "dutyday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "target": "dutyslot", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L290", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L290", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "target": "dutyassignment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L290", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "dutyday", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L320", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L331", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L381", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutydaysavebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L630", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L630", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L656", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L656", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L693", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L693", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L726", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L726", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L730", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L730", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "sysuser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L730", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L750", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L750", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L750", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L771", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "target": "time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L125", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L180", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L243", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L309", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L333", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L348", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L355", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L357", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L374", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L385", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L386", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L394", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L426", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutyday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L431", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L449", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L456", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L485", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L516", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutyslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L525", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L596", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L602", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutyassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L604", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L658", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L696", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L709", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L727", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L733", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L746", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L753", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L761", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L767", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L774", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L787", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L788", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L815", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "dutyassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L820", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L836", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_631", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L631", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_657", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L657", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L40", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L43", "receiver": "raw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L75", "receiver": "p"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "replace", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L75", "receiver": "p"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L79", "receiver": "v"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L79", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L80", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L84", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "lazy_pinyin", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L88", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L90", "receiver": "parts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L90", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "isalnum", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L91", "receiver": "ch"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L92", "receiver": "parts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L92", "receiver": "ch"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L93", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "DICT_SHIFT_TYPE", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L109"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "DICT_WORK_PLAN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L109"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L113", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L113", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L113"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L125", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L128", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L128"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "token_hex", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L139", "receiver": "secrets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "SysDictData", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L143", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L144", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L154", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L156", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L159", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L160", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L166", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L166"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L178", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "callee": "token_urlsafe", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L187", "receiver": "secrets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L191", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "work_plans", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L212"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "cross_day", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L213"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "start_time", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L214"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "end_time", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L215"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L219", "receiver": "shift_labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L220", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L224", "receiver": "work_plan_labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L225", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L245", "receiver": "assignments_by_slot"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L264", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L264", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L264"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L276", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L276", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L276"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L284", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "callee": "DutySlot", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L284"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L296", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L296"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L297", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L302", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L302", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "callee": "DICT_SHIFT_TYPE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L309"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "callee": "DICT_WORK_PLAN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L310"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L324"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L323", "receiver": "duty_date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "monthrange", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L332", "receiver": "calendar"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L336", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L336"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L343", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L350", "receiver": "result"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L365", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L365", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L365"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L377", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L378", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L384"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "LINK_CLOSED", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L384"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L391", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L392", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L393", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L399", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L399", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L399"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L411", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L411", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L412", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L412", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L413", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L420", "receiver": "seen_types"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L423", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L429", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L441", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L442", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L444"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "LINK_CLOSED", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L444"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L454", "receiver": "existing_by_type"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L458", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L467", "receiver": "existing_by_type"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L468", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L471", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L475", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L475", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L475"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "DICT_WORK_PLAN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L488"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L497", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L497", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L497"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "DICT_SHIFT_TYPE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L510"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L511", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L526", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L544", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L545", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L552", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L552"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L566", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L590", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L591", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L603", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L605", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L622", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L625", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L626", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L633", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L633"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L644", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L644", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L644"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L662", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L662", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "SysUserRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L664"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L662", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L662"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L665", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L677", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L677", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L685", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L686", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L686", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L689", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L694", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L698", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L698", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L698"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L713", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L713", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "SysUserRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L713"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L731", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L735", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L735", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L735"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L751", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L755", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L755", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L755"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L772", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L777", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "with_for_update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L777", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L777", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L777"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L788", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L788", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L791", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "with_for_update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L791", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L791", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DutySlot", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L791"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L804", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L804", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L804"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L819", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "SOURCE_GRAB", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L823"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L821", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L834", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L835", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DICT_SHIFT_TYPE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L836"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L838", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L840", "receiver": "shift_labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L841", "receiver": "SHIFT_LABELS"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/e465a447ffe7f9df496a20ccb8b7b04c600cf6599fbae6c7bce6e96df94c2af3.json b/backend/graphify-out/cache/ast/v0.9.4/e465a447ffe7f9df496a20ccb8b7b04c600cf6599fbae6c7bce6e96df94c2af3.json new file mode 100644 index 000000000..40581fde5 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/e465a447ffe7f9df496a20ccb8b7b04c600cf6599fbae6c7bce6e96df94c2af3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "label": "admin.py", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "label": "list_roles_for_select()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L47"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "label": "list_users_for_select()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L79"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "label": "list_roles_for_designer()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L105"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantcreatebody", "label": "TenantCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L126"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantupdatebody", "label": "TenantUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L137"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_tenants", "label": "list_tenants()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L149"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "label": "create_tenant()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L170"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "label": "update_tenant()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L192"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "label": "delete_tenant()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L217"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L234"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_usercreatebody", "label": "UserCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L247"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_userupdatebody", "label": "UserUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L264"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "label": "list_users()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L280"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "label": "get_user_by_id()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L338"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "label": "create_user()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L358"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "label": "update_user()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L391"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "label": "delete_user()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L421"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "label": "reset_user_password()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L434"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypecreatebody", "label": "DictTypeCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L451"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypeupdatebody", "label": "DictTypeUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L460"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "label": "list_dict_types()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L470"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "label": "create_dict_type()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L486"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "label": "update_dict_type()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L508"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "label": "delete_dict_type()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L533"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdatacreatebody", "label": "DictDataCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L550"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdataupdatebody", "label": "DictDataUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L561"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "label": "list_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L572"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "label": "create_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L589"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "label": "update_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L613"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "label": "delete_dict_data()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L637"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "label": "dict_data_options()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L650"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "label": "dict_data_all()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L664"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptcreatebody", "label": "DeptCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L691"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptupdatebody", "label": "DeptUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L704"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "label": "list_depts()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L717"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "label": "create_dept()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L728"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "label": "update_dept()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L754"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "label": "delete_dept()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L780"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_sitecreatebody", "label": "SiteCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L797"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_siteupdatebody", "label": "SiteUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L812"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "label": "list_sites()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L828"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "label": "create_site()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L842"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "label": "update_site()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L870"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "label": "delete_site()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L899"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postcreatebody", "label": "PostCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L916"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postupdatebody", "label": "PostUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L926"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "label": "list_posts()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L937"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "label": "create_post()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L951"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "label": "update_post()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L974"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "label": "delete_post()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L998"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postusersupdatebody", "label": "PostUsersUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1010"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "label": "list_post_bound_users()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1017"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "label": "update_post_bound_users()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1031"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menucreatebody", "label": "MenuCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1055"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menuupdatebody", "label": "MenuUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1071"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "label": "list_menus()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1088"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "label": "create_menu()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1099"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "label": "update_menu()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1128"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "label": "delete_menu()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1158"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolecreatebody", "label": "RoleCreateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1175"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roleupdatebody", "label": "RoleUpdateBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1185"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolemenubody", "label": "RoleMenuBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1195"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roledatascopebody", "label": "RoleDataScopeBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1199"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "label": "list_role_management()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1207"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "label": "create_role_management()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1221"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "label": "get_role_management()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1244"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "label": "update_role_management()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1261"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "label": "delete_role_management()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1285"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_menus", "label": "get_role_menus()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1298"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "label": "update_role_menus()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1308"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "label": "get_role_data_scope()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1323"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "label": "update_role_data_scope()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1336"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_format_file_size", "label": "_format_file_size()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1362"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "label": "upload_attachment()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1372"}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachmentdownloadurlbody", "label": "AttachmentDownloadUrlBody", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1422"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "label": "attachment_download_url()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1429"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "label": "attachment_preview_url()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1455"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "label": "list_menu_favorites()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1479"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "label": "create_menu_favorite()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1493"}, {"id": "menufavoritecreatebody", "label": "MenuFavoriteCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "label": "reorder_menu_favorites()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1518"}, {"id": "menufavoritereorderbody", "label": "MenuFavoriteReorderBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "label": "delete_menu_favorite()", "file_type": "code", "source_file": "app/api/admin.py", "source_location": "L1539"}, {"id": "menufavoritedeletebody", "label": "MenuFavoriteDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_51", "label": "\u8fd4\u56de\u8fd0\u8425\u7aef\u89d2\u8272\u4e0b\u62c9\u9009\u9879\uff08label=\u5e93\u4e2d\u89d2\u8272\u540d\uff0cvalue=Web \u89d2\u8272\u7801\uff09\u3002", "file_type": "rationale", "source_file": "app/api/admin.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_83", "label": "\u8fd4\u56de\u7528\u6237\u4e0b\u62c9\u9009\u9879\uff08label=\u6635\u79f0\uff0cvalue=\u7528\u6237ID\uff0c\u9644\u5e26 nickName/userNo\uff09\u3002 \u4f9b\u7533\u8bf7\u4eba/\u5ba1\u6279\u4eba\u7b49\u9009\u62e9\u573a\u666f\u4f7f\u7528\uff0c\u8fd4\u56de\u672c\u79df\u6237\u5168\u90e8\u6709\u6548", "file_type": "rationale", "source_file": "app/api/admin.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_109", "label": "\u8fd4\u56de\u89d2\u8272\u4e0b\u62c9\u9009\u9879\uff08label=\u89d2\u8272\u540d\uff0cvalue=\u89d2\u8272ID UUID\uff09\uff0c\u4f9b\u6d41\u7a0b\u8bbe\u8ba1\u5668\u5ba1\u6279\u4eba\u9009\u62e9\u4f7f\u7528\u3002 \u4e0e /roles \u4e0d\u540c\uff0c\u6b64\u7aef\u70b9\u8fd4\u56de\u89d2\u8272 UUID", "file_type": "rationale", "source_file": "app/api/admin.py", "source_location": "L109"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_1434", "label": "\u8fd4\u56de\u5e26 Content-Disposition \u7684\u4e0b\u8f7d URL\uff0c\u4fdd\u8bc1\u6d4f\u89c8\u5668\u4f7f\u7528\u539f\u59cb\u6587\u4ef6\u540d\u3002", "file_type": "rationale", "source_file": "app/api/admin.py", "source_location": "L1434"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_1460", "label": "\u8fd4\u56de\u7528\u4e8e\u6d4f\u89c8\u5668\u5185\u8054\u9884\u89c8\u7684 URL\uff08PDF iframe \u7b49\uff09\u3002", "file_type": "rationale", "source_file": "app/api/admin.py", "source_location": "L1460"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_data_scope", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_menu_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_response", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_attachment_biz", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_core_storage", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_schemas_menu_favorite", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantcreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantcreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_tenants", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_tenants", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L149", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L170", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L170", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L170", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L217", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L217", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_usercreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_usercreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L247", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_userupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L264", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_userupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L264", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L280", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L280", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_usercreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_userupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L434", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L434", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypecreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L451", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypecreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L451", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypeupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypeupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L460", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L486", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypecreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L486", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L486", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L508", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypeupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L508", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L508", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdatacreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdatacreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L550", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdataupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdataupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L572", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L572", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L589", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdatacreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L589", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L589", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L613", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdataupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L613", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L613", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L637", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L637", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L650", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L650", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L664", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L664", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptcreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L691", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptcreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L691", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L704", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L704", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L717", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L717", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L728", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L728", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L728", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L754", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L754", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L754", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L780", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L780", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_sitecreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L797", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_sitecreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L797", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_siteupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L812", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_siteupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L812", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L842", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_sitecreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L842", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L842", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L870", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_siteupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L870", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L870", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L899", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L899", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postcreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L916", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postcreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L916", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L926", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L926", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L937", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L937", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postcreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L974", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L974", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L974", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L998", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L998", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postusersupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1010", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postusersupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1010", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1017", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1017", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postusersupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menucreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1055", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menucreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1055", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menuupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1071", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menuupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1071", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1088", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1088", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1099", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menucreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1099", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1099", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menuupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolecreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolecreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1175", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roleupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1185", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roleupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1185", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolemenubody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolemenubody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roledatascopebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1199", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roledatascopebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1199", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolecreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roleupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_menus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_menus", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolemenubody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1323", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1323", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roledatascopebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_format_file_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1362", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1372", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1372", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1372", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachmentdownloadurlbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1422", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachmentdownloadurlbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1422", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachmentdownloadurlbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1455", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachmentdownloadurlbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1455", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1455", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1479", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "target": "menufavoritecreatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "target": "menufavoritereorderbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1539", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "target": "menufavoritedeletebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1539", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1539", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L289", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L343", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L364", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L477", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L492", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L515", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L580", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L595", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L668", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L722", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L734", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L835", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L848", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L957", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1022", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1037", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1093", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1227", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1249", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1315", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1343", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1395", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_format_file_size", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1438", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1486", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1503", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1528", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1549", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_51", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_83", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_109", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L109", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_1434", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1434", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rationale_1460", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/admin.py", "source_location": "L1460", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L53", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L53", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L53"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L61", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "_map_role_name_to_web", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L68", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L69", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L75", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L89", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L89"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L91", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L91", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L114", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L114"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L116", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L116", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L117", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L117", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_tenants", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L157", "receiver": "tenant_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_tenants", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L158", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L184", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L186", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L186", "receiver": "tenant_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L188", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L188"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L199", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L203", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L204", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L205", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L206", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L207", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L208", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L209", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L211", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L211", "receiver": "tenant_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L213", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L213"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "callee": "soft_delete_tenant", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L223", "receiver": "tenant_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L224", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L226", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L226"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L235", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L238", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L238", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L238"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L290", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L290"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L294", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L298", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L299", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L300", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L301", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "apply_data_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L308", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L308"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L309", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L310", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "offset", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L310", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L310", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L310", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L314", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "SysDept", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L314"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L314", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L317", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L317", "receiver": "dept_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L319", "receiver": "d"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L323", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "SysUserRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L323"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L325", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L330", "receiver": "role_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L332", "receiver": "role_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L333", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L334", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "get_user", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L344", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L346", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L347", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L348", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "assert_row_in_data_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L350", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L350"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L352", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "get_user_with_relations", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L353", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L354", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "user_no_exists", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L365", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L366", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L381", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L385", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L385", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L387", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L387"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L398", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L402", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L403", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L404", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L405", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L406", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L407", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L408", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L409", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L410", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L411", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L412", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L413", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L415", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L415", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L417", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L417"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "callee": "soft_delete_user", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L427", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L428", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L430", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L430"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "callee": "reset_password", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L440", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L441", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L443", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L443"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L481", "receiver": "dict_type_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L482", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L500", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L502", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L502", "receiver": "dict_type_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L504", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L504"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L516", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L520", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L521", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L522", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L523", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L524", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L527", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L527", "receiver": "dict_type_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L529"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "callee": "soft_delete_dict_type", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L539", "receiver": "dict_type_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L540", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L542", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L542"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L584", "receiver": "dict_data_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L605", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L607", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L607", "receiver": "dict_data_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L609", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L609"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L620", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L624", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L625", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L626", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L627", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L628", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L629", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L631", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L631", "receiver": "dict_data_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L633"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "callee": "soft_delete_dict_data", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L643", "receiver": "dict_data_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L644", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L646", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L646"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "callee": "list_dict_data_options", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L657", "receiver": "dict_data_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L660", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L669", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L669"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L670", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L672", "receiver": "q"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L678", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L683", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "callee": "list_depts_tree", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L723", "receiver": "dept_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L724", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L746", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L748", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L748", "receiver": "dept_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L750", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L750"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L761", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L765", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L766", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L767", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L768", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L769", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L770", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L771", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L772", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L774", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L774", "receiver": "dept_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L776", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L776"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "callee": "soft_delete_dept", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L786", "receiver": "dept_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L787", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L789", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L789"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L837", "receiver": "site_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L838", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L862", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L864", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L864", "receiver": "site_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L866", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L866"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L877", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L881", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L882", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L883", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L884", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L885", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L886", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L887", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L888", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L889", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L890", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L891", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L893", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L893", "receiver": "site_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L895", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L895"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "callee": "soft_delete_site", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L905", "receiver": "site_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L906", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L908", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L908"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L946", "receiver": "post_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L947", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L966", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L968", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L968", "receiver": "post_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L970"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L981", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L985", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L986", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L987", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L988", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L989", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L990", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L992", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L992", "receiver": "post_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L994", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L994"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "callee": "soft_delete_post", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1004", "receiver": "post_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1005", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1007", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1007"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "callee": "get_post", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1023", "receiver": "post_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1025", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "callee": "list_user_ids_bound_to_post", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1026", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1027", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "get_post", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1038", "receiver": "post_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1040", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "sync_post_user_bindings", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1042", "receiver": "user_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1043", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1045", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1047", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1047"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "callee": "list_menus_tree", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1094", "receiver": "menu_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1095", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1120", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1122", "receiver": "menu_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1124"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1135", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1139", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1140", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1141", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1142", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1143", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1144", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1145", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1146", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1147", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1148", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1149", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1150", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1152", "receiver": "menu_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1154", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1154"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "callee": "soft_delete_menu", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1164", "receiver": "menu_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1165", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1167", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1167"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "callee": "list_roles", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1215", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "callee": "total_pages", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1216", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1217", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "callee": "create_role", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1228", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1236", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1238", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1238", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1240"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "get_role", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1250", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1252", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "assert_row_in_data_scope", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1254"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1256", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1257", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1257", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1268", "receiver": "body"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "update_role", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1269", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1272", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1273", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1274", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1275", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1276", "receiver": "payload"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1277", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1279", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "_row_to_dict", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1279", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1281", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1281"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "callee": "soft_delete_role", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1291", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1292", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1294", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1294"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_menus", "callee": "get_role_menu_ids", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1303", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_menus", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1304", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1316", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1317", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1319", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1319"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "callee": "get_role", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1328", "receiver": "role_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1332", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1350", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1352", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1354", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1354"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1380", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "resolve_upload_folder", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1382", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "read", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1385", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "upload_file", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1386", "receiver": "storage"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1387", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "startswith", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1388", "receiver": "full_url"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "lstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1393", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "splitext", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1393", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "create_oss", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1396", "receiver": "oss_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1404", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1405", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1408", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "rollback", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1418", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1419", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1419"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1435", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1437", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "resolve_storage_path", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1439", "receiver": "oss_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "get_oss_by_url", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1441", "receiver": "oss_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1442", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1444", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "rsplit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1446", "receiver": "file_url"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "presigned_download_url", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1448", "receiver": "storage"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1449", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1451", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1451"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1461", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1463", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "resolve_storage_path", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1465", "receiver": "oss_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "presigned_preview_url", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1467", "receiver": "storage"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1468", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1470", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1470"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1483", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1485", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1489", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "callee": "list_favorites", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1489", "receiver": "fav_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1500", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1502", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "add_favorite", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1505", "receiver": "fav_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1510", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1512", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1514", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1514"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1525", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1527", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "callee": "reorder_favorites", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1530", "receiver": "fav_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1533", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1535", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1535"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1546", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "callee": "error_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1548", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "callee": "soft_delete_favorite", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1550", "receiver": "fav_svc"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "callee": "success_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py", "source_location": "L1553", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_download_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachment_preview_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_attachmentdownloadurlbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dept", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_dict_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_menu_favorite", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_post", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_role_management", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_site", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_tenant", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_create_user", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dept", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_dict_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_menu_favorite", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_post", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_role_management", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_site", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_tenant", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_delete_user", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptcreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_deptupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_all", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dict_data_options", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdatacreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dictdataupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypecreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_dicttypeupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_format_file_size", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_data_scope", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_management", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_role_menus", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_tenant_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_get_user_by_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_depts", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_dict_types", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menu_favorites", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_menus", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_post_bound_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_posts", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_role_management", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_designer", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_roles_for_select", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_sites", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_tenants", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_list_users_for_select", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menucreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_menuupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postcreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_postusersupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reorder_menu_favorites", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_reset_user_password", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolecreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roledatascopebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_rolemenubody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_roleupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_sitecreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_siteupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantcreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_tenantupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dept", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_dict_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_menu", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_post_bound_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_data_scope", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_management", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_role_menus", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_site", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_tenant", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_update_user", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_upload_attachment", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_usercreatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_admin_userupdatebody"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/e57ee310e7b434ba6b9025ff4543d66dab2566386924e33d437500aa2f49b636.json b/backend/graphify-out/cache/ast/v0.9.4/e57ee310e7b434ba6b9025ff4543d66dab2566386924e33d437500aa2f49b636.json new file mode 100644 index 000000000..583a07ee9 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/e57ee310e7b434ba6b9025ff4543d66dab2566386924e33d437500aa2f49b636.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "label": "duty_schedule.py", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "label": "DutyBizError", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L35"}, {"id": "valueerror", "label": "ValueError", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "label": "parse_hhmm()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L39"}, {"id": "time", "label": "time", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "label": "format_hhmm()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L52"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "label": "format_time_label()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L58"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "label": "split_work_plans()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L69"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "label": "join_work_plans()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L75"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "label": "build_dict_value_from_label()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L80"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "label": "ensure_dict_data()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L94"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "label": "_load_dict_label_map()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "label": "normalize_person_name()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L174"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "label": "new_access_token()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L183"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "label": "build_public_url()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L187"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "label": "_assignment_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L192"}, {"id": "dutyassignment", "label": "DutyAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "label": "_slot_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L201"}, {"id": "dutyslot", "label": "DutySlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "label": "_day_dict()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L214"}, {"id": "dutyday", "label": "DutyDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "label": "_load_day_by_date()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L234"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "label": "_load_day_by_id()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L246"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "label": "_load_slots()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L254"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "label": "_load_assignments_for_slots()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L262"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "label": "_serialize_day()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L278"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "label": "empty_day_skeleton()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L284"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "label": "get_month_summary()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L295"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "label": "get_day_detail()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L318"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "label": "soft_delete_assignment()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L325"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "label": "set_link_status()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L345"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "label": "_count_active_assignments()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L361"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "label": "save_day()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L369"}, {"id": "dutydaysavebody", "label": "DutyDaySaveBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "label": "resolve_duty_staff_role_id()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L533"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "label": "list_duty_staff_users()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L559"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "label": "assert_user_is_duty_staff()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L596"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "label": "_list_public_users()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L629"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "label": "_resolve_grab_user()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L633"}, {"id": "sysuser", "label": "SysUser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "label": "get_public_page()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L653"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "label": "grab()", "file_type": "code", "source_file": "app/services/duty_schedule.py", "source_location": "L674"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_1", "label": "\u503c\u73ed\u6392\u73ed\u9886\u57df\u670d\u52a1 \u2014 docs/superpowers/specs/2026-08-14-duty-schedule-design.md", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_534", "label": "\u6309\u56fa\u5b9a id \u67e5\u627e\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\uff1b\u627e\u4e0d\u5230\u518d\u6309\u89d2\u8272\u540d\u515c\u5e95\u3002", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", "source_location": "L534"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_560", "label": "\u672c\u79df\u6237\u542f\u7528\u4e14\u7ed1\u5b9a\u300c\u503c\u73ed\u4eba\u5458\u300d\u89d2\u8272\u7684\u7528\u6237\uff08\u516c\u5f00\u9875 users / \u7ba1\u7406\u7aef options\uff09\u3002", "file_type": "rationale", "source_file": "app/services/duty_schedule.py", "source_location": "L560"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "calendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "secrets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "pypinyin", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_models_duty_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "app_schemas_duty", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "target": "valueerror", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "target": "time", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L94", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L94", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L183", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L187", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "target": "dutyassignment", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "dutyslot", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "dutyassignment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "dutyday", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "dutyslot", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "dutyassignment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L214", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "target": "dutyday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "target": "dutyday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L246", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L254", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L254", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "target": "dutyslot", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L254", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "target": "dutyassignment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L262", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "dutyday", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L318", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L318", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L318", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L318", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L325", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L325", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L345", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L345", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L345", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutydaysavebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L559", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L559", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L596", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L596", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L629", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L629", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L633", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L633", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "sysuser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L633", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L674", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L674", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L674", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "target": "time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L210", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L279", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L280", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L281", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L321", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L322", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L349", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L350", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L358", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutyday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L392", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L395", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L420", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutyslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L499", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L505", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "dutyassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L507", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L530", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L599", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L612", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L630", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L636", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L649", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L656", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L664", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L670", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L677", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L690", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L691", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L718", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "target": "dutyassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L723", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_534", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L534", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_rationale_560", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/duty_schedule.py", "source_location": "L560", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L40", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L43", "receiver": "raw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L72", "receiver": "p"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "split", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "replace", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L72", "receiver": "p"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L76", "receiver": "v"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L76", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L81", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "lazy_pinyin", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L85", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L87", "receiver": "parts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L87", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "isalnum", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L88", "receiver": "ch"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L89", "receiver": "parts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L89", "receiver": "ch"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L90", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L103", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "DICT_SHIFT_TYPE", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L106"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "DICT_WORK_PLAN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L106"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L110", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L110", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L110"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L125", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L125", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L125"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "token_hex", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L136", "receiver": "secrets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "SysDictData", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L141", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L151", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L153", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L156", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L157", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L163", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "callee": "SysDictData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L163"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "callee": "token_urlsafe", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L184", "receiver": "secrets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L188", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L206", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L209", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L220", "receiver": "assignments_by_slot"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L226", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L236", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L236", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L236"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L248", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L248", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L248"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L256", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "callee": "DutySlot", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L256"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L268", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L268"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L269", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L274", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L274", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L288"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L287", "receiver": "duty_date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "monthrange", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L296", "receiver": "calendar"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L300", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L300", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L300"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L307", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L314", "receiver": "result"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L329", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L329", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L329"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L341", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L342", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L348"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "LINK_CLOSED", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L348"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L355", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L356", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L357", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "callee": "count", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L363", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L363"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L375", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L375", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L376", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L376", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L377", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L384", "receiver": "seen_types"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L387", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L393", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L405", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L406", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "LINK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L408"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "LINK_CLOSED", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L408"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L418", "receiver": "existing_by_type"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L422", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L431", "receiver": "existing_by_type"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L432", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L437", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L451", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L452", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L459", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L459"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L473", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L493", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L494", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L506", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L508", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L525", "receiver": "SHIFT_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L528", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L529", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L536", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L536", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L536"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L547", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L547", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "callee": "SysRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L547"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "SysUserRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L567"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L565", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L565"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L568", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L580", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L580", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L588", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L589", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L589", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L592", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L597", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L601", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L601"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L616", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L616", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "callee": "SysUserRole", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L616"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L634", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L638", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L638", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "callee": "SysUser", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L638"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L654", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L658", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L658", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L658"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L675", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L680", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "with_for_update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L680", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L680", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DutyDay", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L680"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L691", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L691", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L694", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "with_for_update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L694", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L694", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DutySlot", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L694"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L707", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L707", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "DutyAssignment", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L707"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L722", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "SOURCE_GRAB", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L726"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "generate_id", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L724", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L737", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L738", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L740", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py", "source_location": "L742", "receiver": "SHIFT_LABELS"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assert_user_is_duty_staff", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_assignment_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_dict_value_from_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_build_public_url", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_count_active_assignments", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_day_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_dutybizerror", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_empty_day_skeleton", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_ensure_dict_data", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_hhmm", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_format_time_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_day_detail", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_month_summary", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_get_public_page", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_grab", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_join_work_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_duty_staff_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_list_public_users", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_assignments_for_slots", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_date", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_day_by_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_dict_label_map", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_load_slots", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_new_access_token", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_normalize_person_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_parse_hhmm", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_duty_staff_role_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_resolve_grab_user", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_save_day", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_serialize_day", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_set_link_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_slot_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_soft_delete_assignment", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_duty_schedule_split_work_plans"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/e75254bdad34bd2888deb785991e5952bdf086b6658d05aca4a1809384b4538f.json b/backend/graphify-out/cache/ast/v0.9.4/e75254bdad34bd2888deb785991e5952bdf086b6658d05aca4a1809384b4538f.json new file mode 100644 index 000000000..e0448295e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/e75254bdad34bd2888deb785991e5952bdf086b6658d05aca4a1809384b4538f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "label": "__init__.py", "file_type": "code", "source_file": "app/schemas/pl/__init__.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - Pydantic Schema", "file_type": "rationale", "source_file": "app/schemas/pl/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_freight", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_vehicle_recharge", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/ec7f8cf06b90fe24b8ac14cda476a71e7f2f2d3aa8fe057b6f2dc95ad136e939.json b/backend/graphify-out/cache/ast/v0.9.4/ec7f8cf06b90fe24b8ac14cda476a71e7f2f2d3aa8fe057b6f2dc95ad136e939.json new file mode 100644 index 000000000..941d98c0e --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/ec7f8cf06b90fe24b8ac14cda476a71e7f2f2d3aa8fe057b6f2dc95ad136e939.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "label": "PlanProductBase", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L16"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "label": "PlanProductUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L59"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "label": "PlanArchiveBrandQtyItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L81"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "label": "PlanProductRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "label": "PlanBase", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L105"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L155"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L176"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L190"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L239"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "label": "PlanRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L244"}, {"id": "planresourcesnapshotmixin", "label": "PlanResourceSnapshotMixin", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L278"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L282"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "label": "PlanDeliverySlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L287"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "label": "PlanSubpackSlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L294"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L306"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L317"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "label": "PlanListQuery", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L328"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "label": "PlanProductCertItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L353"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L361"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L366"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L373"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L384"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "label": "PlanDriverFeedbackProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L390"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "label": "PlanDriverFeedbackUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L397"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "label": "PlanSiteFeedbackUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L406"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L419"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "label": "PlanSideContractsUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L424"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "label": "PlanContractGapRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L429"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "label": "PlanContractGapListResponse", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L448"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "app_schemas_pl_datetime_parse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "app_schemas_pl_resource_snapshot", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L155", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L176", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L176", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "target": "planresourcesnapshotmixin", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L278", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L294", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L317", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L317", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L366", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L373", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L384", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L406", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L406", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L424", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L424", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L429", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L448", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L448", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgaplistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractgapread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandriverfeedbackupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistresponse", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansidecontractsupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansitefeedbackupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/stat-index.json b/backend/graphify-out/cache/stat-index.json index cdc5be54d..0e05faa72 100644 --- a/backend/graphify-out/cache/stat-index.json +++ b/backend/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{"/Users/zlwu/work/00code/shanxia2.0/backend/start-prod.sh":{"size":7357,"mtime_ns":1782639355476060453,"hash":"ca89869446be74a2bf2367b3b28f448580220859a39a84ad9613ac5fe35a8433"},"/Users/zlwu/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661446983244,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982281973984,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py":{"size":6280,"mtime_ns":1782790852770448643,"hash":"8f9da799977bee7134d87a26ff8434ac5ef8eabb0b7368dd537eee49ad7fd00b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":2207,"mtime_ns":1783208067881286091,"hash":"313e6da0e91d743ce891dd283458c79b50b24c4d909dc96ca7b3fd9d2bfa5013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":7457,"mtime_ns":1782790841500516545,"hash":"34bac56e1c2cb6215f4b5fa2dc32d77d4b4abca51428819eebf4afd269cc51cf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930724444498,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930725155710,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py":{"size":6958,"mtime_ns":1784032424448146538,"hash":"c2fb44aedb880733de28afa7f92d2c1c681eb600f821bbeba2bcda3933e5bc37"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":11971,"mtime_ns":1782701669198208175,"hash":"0b84c32828939e6102bb3647691fa8f04b1f68e0e0e9f28127374cc44e19a11c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1510,"mtime_ns":1782790847265601586,"hash":"8bc9c8ae62e2be2c6920036582ba448dfcd1711c41cebb62274ff6bc6ee14b0b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":14141,"mtime_ns":1782855136810943216,"hash":"3ae2c413c10898a8adb3d6773870bafbfbc18c739c10e0e8b4f765b4b5ca6c08"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":8043,"mtime_ns":1782648925694296304,"hash":"626dff86937e5cacec634ecbc61cd53d3763d760223a1d4ec7cd11f64e59a220"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":10876,"mtime_ns":1782790001926627098,"hash":"b39f128b6612589ea6ac5babd30752e9585b3af07b82bb1ad53c9e3c0d90816f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/models.py":{"size":36012,"mtime_ns":1782699345666495916,"hash":"01f974f182660ec4f215bcacc31eddadd7899d60d95aa19a61046579a994512a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":2186,"mtime_ns":1784035957226402359,"hash":"5af681963b36af57eaca7fdfc7f707255008ffba18df1a8c2d5903f58fcbf159"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930807298966,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930808197763,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930810184774,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973062398026,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930808681891,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930808144846,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930808426681,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930810245983,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930808614098,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002126415047,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":5164,"mtime_ns":1782688288640487823,"hash":"370a7c2b5de64c6b72f98bcf7fbbc166ba2a7f5673c6e1426b10bcc88220bb27"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":14214,"mtime_ns":1783851628178366109,"hash":"aeac623e3020fee4cdd01e463ced23e4e03539a17c5b57dcbd9d88aac5a4fb4f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5537,"mtime_ns":1782688289303121533,"hash":"f4edc5824466d0096b3b70aeea7b4460a9fa54ca0929421759b625b60c56c505"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5659,"mtime_ns":1782688281816798167,"hash":"0192db8ac9c3de42fe8ee58324c77111e152bf4c35fd15c0b16467fe243712f0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930726090799,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930725878047,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9417,"mtime_ns":1782688282481859519,"hash":"008550fe8efce5310afd3d41d944cee4b68d71763a587583f8832855480477f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7600,"mtime_ns":1782688282878700273,"hash":"36951a77088782d80500bfa6266b46a564a670e10b70af7a28cdee8c50741098"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6525,"mtime_ns":1782688288935534527,"hash":"a7bf593eff76d08b338f48f9a035fa1493f4ca88867bf9fdf4e9af06b6165759"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4562,"mtime_ns":1782699354647000111,"hash":"f233bde579c4f6c7f2fd6030878c5946fb5dd5e247efaf4fe80d3f48622c19a8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5418,"mtime_ns":1782688289691482227,"hash":"5bd3fd93c60956dab0268e9f4e6cf315d0a9c9656d649f4abb40858ba1d32911"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":1012,"mtime_ns":1780108930727448890,"hash":"7de1eb94b9fbb897a7b362ffdb5df5ab1020aa7247c7c37a2a2a2aa5cdbac8ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":25052,"mtime_ns":1782688290021142467,"hash":"6ca7e3b79e91356a050592b768d7a6749e1bfdb2841a208c7235899603368aec"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6604,"mtime_ns":1782688283203296227,"hash":"ebb38fcd527fdac4dcbf0632ac926e4cbe95dddb5fab79c3142b010e7a48ea7e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930726010257,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4765,"mtime_ns":1782687678100096646,"hash":"847095009bddac2d77dcbb485bcc57cbe168ff874989c197f49f2a28675d2525"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/public.py":{"size":12682,"mtime_ns":1783858998986861832,"hash":"b98ac3f3bc95c2b42c481ac9ae9137528e55845d425e5d2184827dc424304e42"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":665,"mtime_ns":1780804649232229595,"hash":"f720195209c1783d8b2526220a086c2ae2769d76a12bd7df74136f5432c7b75f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/menu.py":{"size":30932,"mtime_ns":1782790854866245387,"hash":"4e9de047e67ff365d17ac28d30e1baa72cfa3c651caa1b9776e225fc07da0e58"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/admin.py":{"size":50055,"mtime_ns":1782855138852859245,"hash":"a5e74057222e3359f6077b2fd05b2db4d058ec2702243cc449bff8d448d44a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/workflow.py":{"size":21202,"mtime_ns":1782790854865038715,"hash":"3950dd8d9855f5ed33a0e15883f7e442c4e26bc51672209b1e68ce0d0c9ce399"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/leave.py":{"size":6916,"mtime_ns":1782790854865571301,"hash":"6e03239433bbaecc54f72fa2aba2578573ae6c7fc881f287ef57dafed1a0f1b5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_callback.py":{"size":3584,"mtime_ns":1780108930810395025,"hash":"a033c13c7bee7f4b636198c1efa47f2abba0d890657e52b0b7057568d4d83a52"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_engine.py":{"size":14042,"mtime_ns":1780113992914903818,"hash":"5c06a59c734f598d5c7ebe95d30f048ba3a97302b938bc9320d97e5a053c7aef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/web_auth_roles.py":{"size":5592,"mtime_ns":1783858473640363111,"hash":"04c2cd67a7ec8190aa7a9db717a722cd347a52279ac3ef5bd284777f0698a904"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/ws/__init__.py":{"size":26,"mtime_ns":1780108930810617026,"hash":"d4357444e9b5b0a8593000fb6e4dc37469ebe008e675bf42ec0d55d463f88fc6"},"/Users/zlwu/work/00code/shanxia2.0/backend/README.md":{"size":2752,"mtime_ns":1780114581291841672,"hash":"f5def8d25af0556a443c31a73e81f958883b60cfed8b31fac457f2832c2b6d58"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py":{"size":66592,"mtime_ns":1784122553836870448,"hash":"1a0a09e5f5d9eb2d5e18e2f7d851287442ee370a3abfbf0b487ee4b4a18d43b3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410213315055,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":7820,"mtime_ns":1783820526204158517,"hash":"b8d626eca1b0fc6b0216a66afb1cf234155310d3077d940d5158111f873a414b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410210254759,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":25974,"mtime_ns":1783820522540308906,"hash":"6d1fb7bc06a4f16c729b1b226377ffa38b9b47bf1cc75310dcefbb8f6e480574"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":151289,"mtime_ns":1784119033682636742,"hash":"ceaa64369ef66891310f391836c580beefd5a69854b3a5a0539a419744a311b0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350147822837,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410210198550,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212734233591,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198698231150,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410213934514,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":13811,"mtime_ns":1783823672041317102,"hash":"b91167282158aeb11046dccc4bf2f29a13307a0413b3d7b3c860b17d37f8ad4a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840975948859,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8816,"mtime_ns":1782687680547203228,"hash":"779f7f46e7ef8bfba27390d56fa071dfd3a8446d9d3b3361003b1c239f7169aa"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":8121,"mtime_ns":1782687665525772610,"hash":"ec67fc7667847017a8d8b5a276f5c75328bda7fa360746d80c7890de3f6d4b76"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":23825,"mtime_ns":1782687664490640155,"hash":"5d8934ae6318de87b0761686fe491a7ec2be02792a85d84308c383af3193fa8a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":10482,"mtime_ns":1782687664918872966,"hash":"f4e3a684dd7a6c7c927e10e8e1e0c108c151b963777b85c5b74d7e7871f3a438"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410245078685,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410215906642,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237342131933,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5642,"mtime_ns":1782649310467813967,"hash":"f954dc5479f42a52fdb3f05ad9076fdbe43e569bae85299fca6c8f37c7323cde"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386885207867,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":1584,"mtime_ns":1780201410212966513,"hash":"9349799b02a3531d8e1b46f9f70d3b6630afd7306663c779bd11f25448a16013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":7446,"mtime_ns":1782687666050313280,"hash":"e0f2069c43cd272e5f061d30b47a42140ac37aa26379985fc781f8a3851aa44d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127112297110,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":10565,"mtime_ns":1784195323916483606,"hash":"45d9dfeb58bda22227fcd242c738086431616466bb8ee9f1466927d75d4bec48"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity.py":{"size":42231,"mtime_ns":1782687666592409903,"hash":"75f54438002e070076fe37ec2211c5fd67bf4aebd2607ac94db15e30d6f634d8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract.py":{"size":92433,"mtime_ns":1783763318740360571,"hash":"b2362db2f2df750afc1c2263f5e6ac1ccd5daa8b93ad5650d56028f452597837"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/__init__.py":{"size":1,"mtime_ns":1780242127108406092,"hash":"bb5b318d3cb224c50a2e0286e145f89ea7278437437fd17d7c865d67ad148076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/operlog.py":{"size":1069,"mtime_ns":1782699353340106185,"hash":"b9f0a382f8990f69391b26bb75b4538d141d6adadc4260fecaa8b33cb44c063d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/__init__.py":{"size":1,"mtime_ns":1780242127112307360,"hash":"0592c62ce1172d93aca98cbd9aaa54b9c2668022abf3581249516472db312293"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/oper_log.py":{"size":6673,"mtime_ns":1782699352542520022,"hash":"0586702734f693ee099af38d407c71cc0a840153f93174699c5a5201e0a9acbe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/monitor.py":{"size":2789,"mtime_ns":1782790854865860510,"hash":"5c13164e49d7ecb6836cf8e65a705fccd518399b85d3be2318c9581a98bacd51"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/clue.py":{"size":9417,"mtime_ns":1780215022189075651,"hash":"2676afaecac4bb6da185674a9421dfbd40834ca21520adf66bb6b175fb728677"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_follow.py":{"size":8493,"mtime_ns":1782687674053739962,"hash":"54881f876d1842ee4a344d049ea4b5bac18b243535338077cb3eb3ec8b60e9c1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue.py":{"size":25820,"mtime_ns":1783155705954031080,"hash":"3526af7e7e79d505911690355890ccdb3a1c30d302534ffdc8626a454cc2499b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py":{"size":11229,"mtime_ns":1782649305846991404,"hash":"fbc3b4f3356256787839cc5b2a6f8dff41dcf9eb27c791e427e816e3ba14e094"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_follow.py":{"size":10069,"mtime_ns":1783821986040417425,"hash":"06c9f3deab3472b20429c12a618ae2d4d6efd3afa2353ac44cd52651a596af4c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_product.py":{"size":10346,"mtime_ns":1782687669972916544,"hash":"40b497a41ce4003e128dc305abedc54e01dbaad8a8f7bc1ecec1662a3953a1ed"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py":{"size":9594,"mtime_ns":1780743830255260394,"hash":"b20594507aab09cebc3d540acad04547bf780cac9c885187138f5d64718ed513"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/__init__.py":{"size":0,"mtime_ns":1780242127043319167,"hash":"a66deceefc987198863f61b8aa1b5715483a69c4a15ef47cd5586c5d8e429b97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/excel_export.py":{"size":4411,"mtime_ns":1780242127113233948,"hash":"7fbde3fca845e4705487e7f801caee308bcc0c99a9da7d0c99681a96eaaf6076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/supplier_info.py":{"size":3679,"mtime_ns":1780242127112269527,"hash":"8b797e9dee6ac7ff806a8ea23bef5fedce648502ea23287e1b417e9f96d22c2e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/supplier_info.py":{"size":6916,"mtime_ns":1782687684650105460,"hash":"0b66714e36609688f7ce79ecda0679d20df115d2d64a0dff1cc0fc76df7dca6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py":{"size":13126,"mtime_ns":1782650413581368849,"hash":"cd2fc23852ead3c4db19e34bc33c1560fc5f5d4cd7cf51b61def8bf37c44c853"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/quote.py":{"size":5961,"mtime_ns":1780745856749183842,"hash":"29c52786df396aededd0850e3c8a3a36f3fb6a952af03adbe1768dae212b6804"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote.py":{"size":48137,"mtime_ns":1782687675213433843,"hash":"a2ff5c5b74a2becd0949aab6aea8cf63440cce2c0bb22e1a1661463e0b2e963d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py":{"size":10537,"mtime_ns":1782687676011228777,"hash":"57d9d5b4fc2bc8b68c0388a4b8a9c1322539ed7e538764fc23521916429e07c5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_share_log.py":{"size":4277,"mtime_ns":1782650254630170341,"hash":"5bfbf7ce2918f9ecdbbca6fdce17d200cd52cdc71b2dfb44ac126a36ca0ed734"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_approval.py":{"size":8816,"mtime_ns":1782650314936479798,"hash":"736353b8c2c5073d260e007a166234bd7d57958bcc738c56a1d39cfb22381180"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/crm_quote_pdf.py":{"size":9877,"mtime_ns":1780242127112382277,"hash":"fec04892fccccc3601fbeb012c92c77110496910be44102de40b4610148fa58a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_quote_routes.py":{"size":25633,"mtime_ns":1783825326810765171,"hash":"c51b70766aae85dbc537bf5b48a2c350c73ea8e93bcad2a9660d8d45c6d0979d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_approval.py":{"size":13958,"mtime_ns":1780763324103831772,"hash":"3d7fbbb90728568a2577e52d8986ccbec8f599d04a0ef9e330939d1fe729bc98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":29547,"mtime_ns":1783825526614169736,"hash":"95969972c0773528b91d9728d303feae5ca7187d89a49495d5129dcedffc19dc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_template.py":{"size":2897,"mtime_ns":1780229101351431207,"hash":"935adfc7659e31201cd83ba8387bf6abcb39e7cdc63fa4692d699ed874cf113b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_change.py":{"size":2496,"mtime_ns":1780229100306468735,"hash":"05af42f088f6cc400c1e3445d4a2c96670edf482328b361aa4f231230d958729"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_template.py":{"size":11858,"mtime_ns":1780229131746659196,"hash":"b9bdbe6a33c933aefcb25cc57e94b2fd2dc75f8e5822434f3912aa0153dfca00"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_change.py":{"size":15985,"mtime_ns":1780229123819597506,"hash":"771b110d3d136c45106dd61171c724c559b5b4bf572ea7b8c2b648f0bfe629c1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_sub_routes.py":{"size":25165,"mtime_ns":1782650354912882614,"hash":"b2733fd74cb7e6cbe6518fc5a5700e387601afc087be09f395f3c61372099847"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1122,"mtime_ns":1782219602888987090,"hash":"fb9fea8983524e3891357016b6546d982c4a82cb782fc01425f70472d4338b6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1473,"mtime_ns":1782650780925056463,"hash":"678d9ff99b5c89575ef47e5c9e61d495f364917fd6cfb2b322c4d5035d3ba359"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":2363,"mtime_ns":1783745556349035158,"hash":"e8b487a9bb4072356cae7b1b38496c441f9a1534d6807798448e6de97073d669"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":4679,"mtime_ns":1782003396630684570,"hash":"bc3f798cfbc359e0327d72e3c0513fe9cbaee196d0d85bcf6567cf5df4211d97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16644,"mtime_ns":1782003187247224106,"hash":"37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py":{"size":81,"mtime_ns":1780750556881734563,"hash":"07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py":{"size":1547,"mtime_ns":1782003187605255900,"hash":"a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py":{"size":777,"mtime_ns":1780751360180065853,"hash":"3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py":{"size":1668,"mtime_ns":1782688293668634639,"hash":"ac07c7b05fe990e743dd5b4e96a85b59431479ca11b98cce7c340a93dbe99ce1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py":{"size":1677,"mtime_ns":1782688293973889288,"hash":"f683e5bb7a45d0bae3b3f262c201453155eaaaf2c8d7f14f567a14295a68d2e1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py":{"size":3362,"mtime_ns":1782650913604714906,"hash":"c6a142011870516822cf11cff16a86c56908f00680eb7c6219c8441c9b63632a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py":{"size":4984,"mtime_ns":1782650913326708063,"hash":"84285aab7499ce9280156c5814b2dc4fff42841803dd673cc6bfdc6eed498283"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py":{"size":4366,"mtime_ns":1782650887981843546,"hash":"15321fe1df77a555af579474434e3b401bd042555d19ea81a066ef754915612b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/__init__.py":{"size":34,"mtime_ns":1780750594045301798,"hash":"583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py":{"size":5446,"mtime_ns":1782650919964956073,"hash":"1d72733147e0ed997094d7f92d1c1f5e1e108093a50e8e523b3b016c3dd676e4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py":{"size":3931,"mtime_ns":1782687617846731919,"hash":"dba80b8f4e26bc59efd2b2aad6bd430c0315133a98bfbbe1b93113b60baba8b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py":{"size":525,"mtime_ns":1780750871480000584,"hash":"f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py":{"size":4603,"mtime_ns":1782688296833335474,"hash":"74b6e8bf6906518f80f16f218f1af74d2c356a6f392a4e8a69466f4179ce0b92"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py":{"size":5758,"mtime_ns":1782790898570675189,"hash":"e88b9181e7c1a839074656ce2260cd6f693821402a24f08dd1c0ef3c160f8fa8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py":{"size":13370,"mtime_ns":1783745567004734594,"hash":"3097a75d86d09951d7de7df10a32f5aedcf6ce11279bdf6dfe0005ec9d8a7be1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py":{"size":4582,"mtime_ns":1782650868959755751,"hash":"3a6480cd051bd1af733a67e5babcd64f3f74cbe230d72364b599cde8b0c67a5f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py":{"size":24037,"mtime_ns":1783746967707088251,"hash":"4834348d099b32b70d14e1b56279dbb385f42519646351d8cb220da8c5fe27f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py":{"size":3656,"mtime_ns":1780750869826924187,"hash":"ac98980bd5b6cbab6a9394b6debc678b050cf4df969eccbc5f2d419b615937cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py":{"size":5638,"mtime_ns":1782688293517624966,"hash":"aa47d8e87982a4077ff067dff2955db9eb67171d6368bc636c1eea17ea7682f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":15431,"mtime_ns":1783747621462206303,"hash":"dae4bfc4be69ca2f3ee8fd2e9e3bd6053a2904c8f7a0c83e536f2dd71874f918"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":34743,"mtime_ns":1783747614591546341,"hash":"ba8f3ff0304a6668bde3c2e6c3e15427153389f7320b943fb261d1d947b41d1e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py":{"size":15715,"mtime_ns":1783745581266319098,"hash":"0d0b8823013a63f91baee0ea19b56f203e70fb1e450f873cfeb634a6cd017f54"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py":{"size":1296,"mtime_ns":1780758200904804714,"hash":"308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8110,"mtime_ns":1782219570945208920,"hash":"249bb0971c263436095a6324457557b6ac5cfc3ca5ac9bc9499a9b4cd21d42bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":544,"mtime_ns":1782011200096708592,"hash":"822060230e155b8704feb447b908c226d4c53e62b3e6df65c89dc3c7a0e6e07f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/__init__.py":{"size":0,"mtime_ns":1780805614160787709,"hash":"2cb780fb722e6dbf2ecea6f6fc19345fb453e1a3c40694ba0ff7465eb7cf7d33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/base.py":{"size":2754,"mtime_ns":1780802262496001324,"hash":"d2fd88aa376aa5914125381cf61a4ae0f343657d6bd7db1f9fe1254e7aba5b2f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/vehicle.py":{"size":591,"mtime_ns":1780802980783200520,"hash":"d87e4262b344e02a7be21534e382e7b75f5543f599d673ddc046134ad0e8ba4e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/__init__.py":{"size":84,"mtime_ns":1780804619867600032,"hash":"5193d61f7204f825551f083e79722805fb2abfd953bb552e80950bb3ff9784a1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicle.py":{"size":3780,"mtime_ns":1780802985736476363,"hash":"aeb49bdd49cb5091c37275b856396e75bcd24557e3a1b58ef668910b1b0aff64"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/vehicle.py":{"size":4776,"mtime_ns":1780802999039302982,"hash":"cf32c66499ca86285561b573d222837ecc76c3fa51b0091b802485fbde8e2bf2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plan.py":{"size":1788,"mtime_ns":1780803836065964235,"hash":"30452b2f7fa19f5677475ce08b3e355dae2440d80d2e9049f8417de01d822863"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plan.py":{"size":4167,"mtime_ns":1780803836065953735,"hash":"acac159dedfacb36f02982b700b2a7c7a8fbb4644eb89c3b0c13871941917864"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan.py":{"size":9619,"mtime_ns":1780803836065902943,"hash":"e311f2b8b5e7785db764216fbecfd2830a11569ccb827a00c8bd3a2ba3804383"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/inventory.py":{"size":3948,"mtime_ns":1782219604456801044,"hash":"19ea80e59a1309518ad6183a6b0b8751401f4724d7b5101d47defc2417ec36c8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":16423,"mtime_ns":1783156035144390497,"hash":"901602a8fe362aec9b89ac6f2ee578f1eeb105fcf12a1a6c3ff4ef98f4ad1ef3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory.py":{"size":10663,"mtime_ns":1780803878293678536,"hash":"e38abdd78010b0e96dcb65ed826de03a752b40e3355546ed06a4b07640cf7013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/weighing.py":{"size":5347,"mtime_ns":1780935341753643087,"hash":"f734c66269b713a840d7ce6c1c6150bd2dc00b114b09963362202d119c82301e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/weighing.py":{"size":14940,"mtime_ns":1782687688848020877,"hash":"71d143eb05d0d3f785f5962892bde64dee3c2937139c975b52af62628f308d46"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing.py":{"size":24042,"mtime_ns":1780804029884092079,"hash":"bc9d5cb59bf90597db0e0a1c9afcef5c2b429c3945c92be34bfdc1e77d26ba28"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_auth.py":{"size":2500,"mtime_ns":1782790853674329877,"hash":"4988b71d4e54b326c333872b34743914d67b15fb753c1b0231e9b00b366458a4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plans.py":{"size":4876,"mtime_ns":1780935329287069452,"hash":"474cb68905249cd5a6237443a412d49cb28af2e0cec61c9bf5c34ec54db1240a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/master_data.py":{"size":619,"mtime_ns":1780925759582999052,"hash":"6f6b2c2e1478efce74b8c6e6fb058d914b8b79adfadf2fea2d91cb55d3f9cdce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicles.py":{"size":4748,"mtime_ns":1780925781827569662,"hash":"8f8b32dfbf4046cfa0b6645d211732596f7027d46244d9c50132425220065483"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plans.py":{"size":17098,"mtime_ns":1783156035873015369,"hash":"bd2c8344e2ab765ceb2a2c91f5cf2facea319ae66c9097f5468a7f5d753b67dd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/mappers.py":{"size":6955,"mtime_ns":1782219619253708711,"hash":"b9e97f66a0a248d06c2f960c3f5ac4fb3369cc976c16709227dee0cc1513d221"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing_logic.py":{"size":4110,"mtime_ns":1780804818442134500,"hash":"468ded88a0a4a397a96884580c88c59291c0b6effa897f08f1b3fea7857f9191"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/dashboard.py":{"size":514,"mtime_ns":1780804990870580151,"hash":"f2c1b1014d0d769abf32dab3783de65fe7fe327c956ffbfe44adce94542f8892"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/dashboard.py":{"size":6576,"mtime_ns":1782651340330906738,"hash":"753703fbbe8ddc02d8fbdae78df4abd1448f5ce5878e2f0390111360fdc300b3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/db_auto_plan.py":{"size":949,"mtime_ns":1780805095845033710,"hash":"9f7513cd2e74f9ddfe5cbee4ae58a40ee7a58aaaff051d590b19a6e1b08bb46a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan_helpers.py":{"size":386,"mtime_ns":1780805092108105489,"hash":"5c6ec7612b204e1dcb65c5daf03fa7f8ffa7710cd1ace63be4f7ca00cbf318b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/auto_generate_plans.py":{"size":4699,"mtime_ns":1780935400833764213,"hash":"d0760cb8155d60e18040bcf6fe41e6964640a3dffd6f4b7bb68678c9f31ab29a"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/run_db_auto_generate_plans.py":{"size":1043,"mtime_ns":1780805102157096922,"hash":"3cd8f15b677f21b2873ff384fc0581da264a53ee4318da3c8262101156e3225b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_dibang_data.py":{"size":20215,"mtime_ns":1782011225157870526,"hash":"28a49a423a784e70bec424b702f3d58f69b6f847153c061414efdcdabb660d0e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory_id.py":{"size":2574,"mtime_ns":1780934632326984469,"hash":"c5269cbb273d987c296143b83f1287762ce67d7ddeccfb0a72bc70234bad9f12"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/product_helpers.py":{"size":2106,"mtime_ns":1780935268573313971,"hash":"cea6b0697eb64081a79d18ab95f0f0477714505a7aef82a41672197b15fc8b14"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_db_inventory_id.py":{"size":586,"mtime_ns":1780934647395760353,"hash":"71a9617d5d0f2c23416686eded204b4c941b47afc3fd6e3facf0c75401e883d9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py":{"size":61386,"mtime_ns":1784032430468998611,"hash":"e23b4653b806a1917eba187d8a3584dff598ad74bc21c8295c179abf0bcfe17e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py":{"size":22053,"mtime_ns":1783754594278544472,"hash":"f3a69a96b7916cb34e23e673b3155d83f7d9698b2582cfae96dedc392da8e6b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py":{"size":17945,"mtime_ns":1783211732481443217,"hash":"477ebd0c4c084cf8bccd10865e4703b6b34829d30b791c32232d96c1bac2947f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py":{"size":5012,"mtime_ns":1783242582112287271,"hash":"1dced39f250919efc4aa798daee1efef3adcca054c7483843536c455919ff106"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py":{"size":11275,"mtime_ns":1783213205154827373,"hash":"557f9e9f06ab6f18eb33f54a579fb8ab0f6992d9b25bb530a2ec49d5b2365708"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py":{"size":7742,"mtime_ns":1783242580346813026,"hash":"9b57e84bea4844ce93220773544064ed6979c5823b07831bc5fe734b6dc860d3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py":{"size":48150,"mtime_ns":1783945795484267217,"hash":"a9a876816af12e43b3fa6b9dc748b74b7107f0cae590e68a2a789945617c620e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":33087,"mtime_ns":1783155250374329483,"hash":"6f7703d37ce761406d42f3be4e53ee85be0d3e43e5b880401087dde47ec6608f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py":{"size":1243,"mtime_ns":1784035957226411568,"hash":"7d66d74042036571b769e5364616560597a3c3347cb9dea6cfbe04c40483b5e2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py":{"size":10543,"mtime_ns":1783760751060550793,"hash":"2d64ca83553dbfc928887171941761114c5db012b9c4a01d34e2b522902bac38"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py":{"size":33513,"mtime_ns":1783849851800999450,"hash":"133db64dcfad9ae687b90084eb8f1b5f713ebabce852bba26b600cab52e51c50"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py":{"size":13188,"mtime_ns":1783242583174353699,"hash":"da03959cdab792ef503edae6ee27e45f9b5a8db1c63cdbcd97bafa85acc9be71"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py":{"size":2918,"mtime_ns":1781880510604174541,"hash":"b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py":{"size":19762,"mtime_ns":1783849843323086946,"hash":"21d29a63b2dbd9178f2239d109c4e71e668c2caf85788dcecc34e7533f0df4e6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py":{"size":6707,"mtime_ns":1783845044115228598,"hash":"34f3d1d723890e294aac765a66d7e86ca87f4288f42cec674bb9151de091fe22"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py":{"size":7694,"mtime_ns":1783849439910099822,"hash":"7bb0a6d4dfdb1ec11e72e971873791b8e188939e7c6b7328a0a2f4f8986c9d1c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py":{"size":39798,"mtime_ns":1783768766029953703,"hash":"0e0620d2878e4b28c560daf8095d30e8e8a281653d40baf01ef94e899ce114e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py":{"size":9697,"mtime_ns":1783209147246415813,"hash":"aac3cfd1a30df824d1a4867c5b358e3155e19a051dbaffbae89c995b55767a8c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py":{"size":15310,"mtime_ns":1783777749440894312,"hash":"c506eb84c104ce63b98cde5b16644f16ddcf4e3aa335089bedcb4c267d21fc0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/public_inventory.py":{"size":1492,"mtime_ns":1783211660985345577,"hash":"ed4e21307ac463410d296a2f8cf53f8e0429187344537bcf1e1212a7affa06a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/public_inventory.py":{"size":6968,"mtime_ns":1782790898570930774,"hash":"79aa205d2e5e89ed45dd7b95068b93e3f6db82ee9258b0331b21d6c8ab551582"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_inventory_link_read.py":{"size":782,"mtime_ns":1782225276143253698,"hash":"6471dfc9a1fbe66223f79490a5827b2422e5ca6932305ccde6aef4b641676a6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_site.py":{"size":8470,"mtime_ns":1783211738132414332,"hash":"08745e00bfa7bd756fbeef7ae7a1d3bf957d6403da51cf7825def02a38502d01"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_site_link_read.py":{"size":2362,"mtime_ns":1782225460524562610,"hash":"3b9e1b93d3c4375b6b3adb4476ceb0df356654089d994aef4fea7e4f29266c06"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_transport_site_service.py":{"size":3701,"mtime_ns":1782225248175867714,"hash":"07585f13aaad965c106e88ac26f5f8c58852c0c2bb0bdb91820185133d799219"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py":{"size":47560,"mtime_ns":1783213204589333188,"hash":"53a61d4da0cd2e2d0bac74abcca13de3f3d506b603453811d8f1cd53fa50b358"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_data_scope.py":{"size":4660,"mtime_ns":1782649048011371782,"hash":"9545dc65fac7e13bf07ece2ec828ec5957bb115e23d0ac8c996f9c70362a4ecd"},"/Users/zlwu/work/00code/shanxia2.0/backend/DEPLOY.md":{"size":2574,"mtime_ns":1782639356701497576,"hash":"6989c30ab5c99ebf488137e31e5561b4a00d36060716dfad3fc247b673538818"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/data_scope_helpers.py":{"size":3358,"mtime_ns":1782650085670691361,"hash":"b0aab03bc7b3afb2faf39410e9881b65e6a2eeecba592d1655b5b9359fb4dbdd"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/patch_pr3_quote_contract.py":{"size":12491,"mtime_ns":1782650163950860693,"hash":"eb6b944df35fda5edb6675b69b00f5a83a75fd78785251d1e81e1788ed439cfe"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/patch_pr3_api.py":{"size":14409,"mtime_ns":1782650231443625388,"hash":"fb4cf4178a4b7c5530999f0c950ed38310dfe81b3168c10117849d6f512be01d"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/patch_pr3_api_calls.py":{"size":3345,"mtime_ns":1782650279067732462,"hash":"57732d0beb80ee17b533c78ce0250967fa83c68354ea9d1972275ba1fbc39007"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_data_scope.py":{"size":801,"mtime_ns":1782650506729785291,"hash":"0f0275c56a43603e69a030dd1d284cfc7982a7636423cfff6d0e692eb4631cb1"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/apply_pl_data_scope.py":{"size":10945,"mtime_ns":1782650517176615737,"hash":"928fe2112c9fd8bab4da7f4fc67d6d247c78187ca3b1a4146cc2fd3d9e04697f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx_data_scope.py":{"size":2394,"mtime_ns":1782650938092205819,"hash":"1e8e1dbdcf4bc68c2e30b99015e930bb9522bd1f633e95604ec6a62bdb2b43f3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db_data_scope.py":{"size":796,"mtime_ns":1782651142571517234,"hash":"ad4e206ae53e25247ebb004e0ef586077a6e7df0eac7b14973c26b186cffb2eb"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/delete_guard.py":{"size":3572,"mtime_ns":1782687610196676295,"hash":"223d91c51a1677b6a4b7802d5571af14d5cda8bc45e4e757b1f2150990a69bce"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_delete_guard.py":{"size":1565,"mtime_ns":1782687611517772849,"hash":"5e2a45f63b7296e3a10dfbd4b4716e54370e1439248881d6591cba5c9f6581d6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_carrier_service.py":{"size":3479,"mtime_ns":1783848338604396640,"hash":"7d12991ffd2e3d7b768aaa587d7f9ae1ed4d641f65ec3f053ed103fc74a5a005"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_recharge.py":{"size":6299,"mtime_ns":1782694169098881801,"hash":"4d5ab880c0c3ca91b485e1ba53725005b9f89fe205780d58a738c861dbb7e6f8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/vehicle_recharge.py":{"size":8824,"mtime_ns":1782693867411719704,"hash":"f084b6fb3e80de0455ee9cfcc857ae5814b79497786367380f3a375b16c4bf85"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_vehicle_recharge_service.py":{"size":22641,"mtime_ns":1783760938743438422,"hash":"a4a9377a8243e30dd7d6a8a175c68525009465fdebdeb01230849156dd8b59f4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_maintenance.py":{"size":6563,"mtime_ns":1782695447503836332,"hash":"c34b79f5bcd004c0f6353922492883e4b08e5a6bc229f0265c9af850d235848b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/vehicle_maintenance.py":{"size":7793,"mtime_ns":1782695447583143336,"hash":"79033735d527926ac082200de0b89a122c53db3cbdf5fb33e3cc69f74dd017f5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_vehicle_maintenance_service.py":{"size":23307,"mtime_ns":1783761151873696556,"hash":"0c7aa346d9879347d6a98c435fadc47873907ca0774147b69acf0d392e00e58b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_urea.py":{"size":5609,"mtime_ns":1782696196169930337,"hash":"71b7de2f90b3c7c732b59683e5cd4d858288121414a1ff2679c039299f5fb024"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/vehicle_urea.py":{"size":6696,"mtime_ns":1782696220189638136,"hash":"750ecae5cdcc857031e618b87ffa9b28607bd47e72ecf6dc7ebbe51003682df3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_vehicle_urea_service.py":{"size":19556,"mtime_ns":1782696213546483763,"hash":"03d389e791e5fac9a5339d1259d342952fced97712c3657e8f791426de32743b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/oper_log_decorator.py":{"size":5312,"mtime_ns":1782701254052728785,"hash":"e476146985da29ad8cb77064d10314470546a8a52f6026a75fdbadd3fee34288"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/oper_log_infer.py":{"size":1767,"mtime_ns":1782699326717654441,"hash":"4346307abeb03020a7069f560556b9954cf50203efb6ac65b0a4b9644b6a9b2d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/oper_log_context.py":{"size":868,"mtime_ns":1782699327268762002,"hash":"064c356f3f0fbabc454311445f02d375b965c2c055ddc51386d4dad50ac3337a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/redis_client.py":{"size":1691,"mtime_ns":1782790834895168051,"hash":"e5d84d7433ce745da7a37fb46dff5d5eb6ae027ef0efbf406da0c9c7fb6089ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/resource_snapshot.py":{"size":3823,"mtime_ns":1782793446819247296,"hash":"2d65c990d058d22010f8d4449652eb752c297a046b5d7b3ff6755c3e1cad0cf3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_transport_resource_snapshot_service.py":{"size":4861,"mtime_ns":1782793450356380638,"hash":"6f94dcb582fe725738a54469e461aa0124b9754b2141cb78d3859ff1a2f25ca9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/datetime_parse.py":{"size":929,"mtime_ns":1782905360746020898,"hash":"7a4eac85768cbeb0ba76f7f478ddadeeacab2498cd9be4070a76e1cfad693cdf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport_address.py":{"size":2604,"mtime_ns":1782906539731495489,"hash":"6548b4b0c8c1d8096ce96ff1d5b523c67b12300f9a3eac66570b0256478a1120"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport_address.py":{"size":6875,"mtime_ns":1782907484528042124,"hash":"7880a37b53dc2e88534ca5750097792ee7e893c94d87bf1eecd8b6055fbba181"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/pl_cert_expiry.py":{"size":711,"mtime_ns":1783208067000967398,"hash":"7c02dbf83fad89c7da757965b545bf77f37792edd0d01d3ed320349b0b60a50b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_delivery_slip_template.sql":{"size":217,"mtime_ns":1783231586212866839,"hash":"e05e3fe7255e6c8a88aceb1aa53d743a4888a34c9fbaa4449c1cb8a275744d68"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_slip_template.sql":{"size":191,"mtime_ns":1783219958449266456,"hash":"e2a17c3df7be5cc0436ef979a48de81eecbe99c03f43662f4b0954a09dfa1305"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_template.sql":{"size":215,"mtime_ns":1783238744737524455,"hash":"24cf12e21f9f61f49c38e654c0ca655f56a21e5e2364e4c2ca4547dad583272e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no.sql":{"size":203,"mtime_ns":1783240340132373787,"hash":"de9b3c8e1617b9c345b2d4005e4a627f10ded089db89d35f0b389b333b840c08"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no_format.sql":{"size":571,"mtime_ns":1783241697391655899,"hash":"61fc58ebda64c5d6be6bfd374dda99c7134e38dc89031527f71916625c4e36db"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_product_legal_use_cert_url.sql":{"size":1180,"mtime_ns":1783253793703960795,"hash":"01105ec581050477087d9bf65528cfe77ce0026d0fb682cba8014c4cdb046db7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/menu_badge.py":{"size":247,"mtime_ns":1783257567212910729,"hash":"88c31e5ef8cee73327a1a0f36ea7ae0e61fa8f1ae140ad95ed0c0b9c2b4d05f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/menu_badges.py":{"size":1203,"mtime_ns":1783257582921626135,"hash":"05dfdc446281abd9c3b273ebae2f9cbc4efe681fdc0ab288a77903e9e2bf83c7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py":{"size":6108,"mtime_ns":1783258109621359209,"hash":"aec342e2370f584c5ed0024bb08a8346c70e1827c09ab456b4b06e9dfc817d8c"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_bx_menu_names.sql":{"size":454,"mtime_ns":1783254856670799736,"hash":"d40ab4c556ab285498f4689c21736832deddc754a9a2b7d806e870ccb39fc9ae"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/seed_sys_menu.sql":{"size":82266,"mtime_ns":1784119136237565207,"hash":"e0c15f9bd4525b6e447a7e8da3aa6bf93c14c47a1b99dc5cb4bee9dfd1a60e8b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_menu_groups.sql":{"size":6367,"mtime_ns":1783256049450807031,"hash":"5f6964d1ea2712d3d72c8f43f08c16597d85fe79f3f54c8be99962090d6c2b67"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_doc_reminder_menu_group.sql":{"size":1562,"mtime_ns":1783256051207137180,"hash":"82a0ce8c5293f5051967633c1c2e0a1dc60e1fc7c97919c9e0866246bbcbe3d1"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260711_hide_vehicle_urea_menus.sql":{"size":269,"mtime_ns":1783760394518896877,"hash":"a5f66647cdb4f0f403689b47b804f8099d7d710753823ef3ddc5e7a5a9ca4ca8"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_pl_dibang_plan_quantity.py":{"size":4258,"mtime_ns":1783777759829460303,"hash":"6af8eb3c1f6c7ad34cd62f1e82e9c6b96737ffd48ba74dda7c5f888c55dd11cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py":{"size":10503,"mtime_ns":1783946967244318920,"hash":"07991890446a106b2d520e5e3c65e27af90c13d00945516ef1ce9bdf2e389879"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_type.sql":{"size":1662,"mtime_ns":1783843576747470605,"hash":"24fcd156f97e2bdf2bd158beb5358fe7159874783a84716c6c18d2565cc8ac1a"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_affiliation.sql":{"size":753,"mtime_ns":1783845019912997576,"hash":"6d450d264921f43c4e74ee4a2bcfc8335d16f77d9e0413267389741a92bf4eb5"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_add_finance_dept.sql":{"size":1697,"mtime_ns":1783855927743333340,"hash":"4ce457089ead5c063ae8e1a6d6553416deb43c54a7edddb574ee2572390aba99"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/setup_business_roles.py":{"size":14256,"mtime_ns":1783858477739135462,"hash":"ac12df2cf75826931c85f4deb3ae28614e31ea825d0beb3cf351a8d4f5cb1071"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_reset_sys_dept.sql":{"size":4517,"mtime_ns":1783855538627076795,"hash":"3795d6127a4dcf55d406be0fe673b8a83655723fe1f07b855e6fe45823d489fa"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_users.py":{"size":28602,"mtime_ns":1783855936414773748,"hash":"f5626fd3ca8bbc16275862080365c3ea2a27fd0f608e2243a284493762a8f735"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/verify_web_menu_codes.py":{"size":2535,"mtime_ns":1783858485781974173,"hash":"16c9c072b5b80fb309d56823963ebd0dd1f437a3f74d7f82711dd8a7c2de86d2"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/refresh_business_role_menus.py":{"size":3812,"mtime_ns":1783858483854587001,"hash":"b2c76109936791e1f624e239b24832237fa0256b38b98578e39825ac215fb166"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/renumber_crm_product_no.py":{"size":9071,"mtime_ns":1783861492796558653,"hash":"320c63801100ea8e9fb62abfb44b3487139377e293310593a877ab2d06e9d2e3"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_product.py":{"size":13287,"mtime_ns":1783860925852062495,"hash":"3e5dd462f2ad6218d2547b66db741132d0179037e6dd3ac24ddaa02a5b970d4b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_product_category.py":{"size":15583,"mtime_ns":1783860690842141129,"hash":"9cbdfdf3335a366aebd0a605431b3952ea9aab26bd564d075d501479ae0b20f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/compare_dict_snapshots.py":{"size":11072,"mtime_ns":1783860128258640426,"hash":"cfc98cc72c5e387317cfa0a7670c47067fffe8f2e540d5cd580ee459e173e4ef"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_sys_oss.py":{"size":22858,"mtime_ns":1783885816251409459,"hash":"20f59e7e19a0c4415bdf17cef32a31db63220346688b3dbe06bc2c52a42d475c"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration/minio_url.py":{"size":4770,"mtime_ns":1783884947929403985,"hash":"54a1bf95512c0a8b5feeb518ea3af76983bb1b0a3ba645898b07debdb2cc52e9"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_customer.py":{"size":25235,"mtime_ns":1783886258025843303,"hash":"f30d5a50a28a1130325a9d9db88586bcae9e2a39434f077ded25f847af2ed66f"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_opportunity.py":{"size":23720,"mtime_ns":1783887271166904779,"hash":"f98964806f32c3020bdd7d644d930760d6ea3ad5162d5f1d6125494263dd5598"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_payment_invoice.py":{"size":13601,"mtime_ns":1783888353771580120,"hash":"c4af77164dac9ba4195c3d239c9679ea367b92f5f7500139f3b59547525af24e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_clue.py":{"size":18423,"mtime_ns":1783887050391179085,"hash":"72b84e497176bc63264c26d891c591c839f9dd9788988043c5752413c1b62a09"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_bx_data.py":{"size":32783,"mtime_ns":1783888844450695833,"hash":"16751fcd542e209535216a0516d78b62eecb81732d7fe0f9ec051fdf811e93b6"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_contract.py":{"size":36188,"mtime_ns":1783888258230435217,"hash":"a6269c8eeff19f4ae8ff7d22a3544ebc4a1858aaecd59583e6afd140a7fa766e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_quote.py":{"size":27580,"mtime_ns":1783887475224438064,"hash":"4ac389eb6cb7437d4f5e8203d9908efec9836046ce8628a5e4be1f8b8ddd52cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_pl_personnel_cert_required.py":{"size":2829,"mtime_ns":1783946968430310316,"hash":"e89b3aa798794dc77085af5c4b880cdddcd2c0590c3cc3414f8a5389fd5f6d93"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260713_pl_personnel_cert_split.sql":{"size":3436,"mtime_ns":1783946793684378982,"hash":"ce61899ec7e13f41de08dbc923dd1ff2a1a976603d13c8f09aa6fd5be9c914a2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/ocr.py":{"size":1889,"mtime_ns":1784035957225824939,"hash":"1de70651a8c1c9e0e208bdccb45d0b9c7e7a0f8f9a663941bdbd5ae278234b1a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_ocr_service.py":{"size":11166,"mtime_ns":1784036700055450000,"hash":"6f233150e253813a7c9da30e6e5d6046fdea01baa67c2589a332fe511ab795f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/test_aliyun_driving_license_ocr.py":{"size":5130,"mtime_ns":1784032210609057675,"hash":"13d43c9144c3795b8870fbd900ed14f97ae22ee043e2c265a5151525666abebe"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260714_pl_ocr_usage_month.sql":{"size":1270,"mtime_ns":1784032423540552834,"hash":"d7018a4e5be9760846731440be98e53584d8e1461fc4ea54a0c8db61c666e7fe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/price_letter.py":{"size":3994,"mtime_ns":1784122554297827011,"hash":"6cd75fdbbd6a2dc65cf0b0b29e6206910fbd86f8bedf05bb56a8835130b81829"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/price_letter.py":{"size":13292,"mtime_ns":1784122560635390924,"hash":"1edbd17d41fcc4205faf15de5ce47aecc5459a39d06a920689379a65cdb9c3d9"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter.sql":{"size":11104,"mtime_ns":1784122573332360310,"hash":"548dab479fcde4bf1628ca2093fd7840720473a774a5289b55bfd4f46b902153"},"/Users/zlwu/work/00code/shanxia2.0/backend/venv.bak.broken/bin/Activate.ps1":{"size":8593,"mtime_ns":1780108930820914793,"hash":"ed2ea10761f2798e8980084d754284d3fcb94f1284ae7085c35c16108fe24846"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter_bill_price.sql":{"size":901,"mtime_ns":1784122547991214820,"hash":"11a4eb6f3b4d89c1a5141bd9a85e931517984b77ac213f5842dc590f928fe1cf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982000000000,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":665,"mtime_ns":1780804649000000000,"hash":"f720195209c1783d8b2526220a086c2ae2769d76a12bd7df74136f5432c7b75f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py":{"size":52987,"mtime_ns":1786164471385093466,"hash":"33736650c2161b2346568d0c5732e450a4a6c8763a172e6552fbb55046e4a26e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/__init__.py":{"size":827,"mtime_ns":1784980394000000000,"hash":"8bd7939017216a2b3c9ea7ed910167f7baf5c02cf724c10b392f6f286f6368a5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/advance.py":{"size":13404,"mtime_ns":1784992736000000000,"hash":"e09d555bad6b1a0ab289d045dda5a4231a54316e34616f60b03f724f9152e73c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/attachment.py":{"size":5758,"mtime_ns":1782790898000000000,"hash":"e88b9181e7c1a839074656ce2260cd6f693821402a24f08dd1c0ef3c160f8fa8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py":{"size":3362,"mtime_ns":1782650913000000000,"hash":"c6a142011870516822cf11cff16a86c56908f00680eb7c6219c8441c9b63632a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/payment.py":{"size":15715,"mtime_ns":1783745581000000000,"hash":"0d0b8823013a63f91baee0ea19b56f203e70fb1e450f873cfeb634a6cd017f54"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":20251,"mtime_ns":1787058336776549243,"hash":"018f973c0b7e749009921085028217f17d3e5acc21bcf0aece5df477991f7267"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/workflow.py":{"size":4984,"mtime_ns":1782650913000000000,"hash":"84285aab7499ce9280156c5814b2dc4fff42841803dd673cc6bfdc6eed498283"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":152113,"mtime_ns":1785808418671982120,"hash":"bc92066b2fdde0314bbc39160a8f70e812c38ac3d4985eb1bc575946716e0194"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":31798,"mtime_ns":1786239377894416082,"hash":"9140626feec0f19a8138f0004d290f9d7531682fdbe03c1aa08dfc183020c07b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm_contract_sub_routes.py":{"size":25165,"mtime_ns":1782650354000000000,"hash":"b2733fd74cb7e6cbe6518fc5a5700e387601afc087be09f395f3c61372099847"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm_quote_routes.py":{"size":27410,"mtime_ns":1786150042655485732,"hash":"31c6530c7713f95a1888ee2b5369a32a8de86040b83c68efc74c5a3faf75b7ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":544,"mtime_ns":1782011200000000000,"hash":"822060230e155b8704feb447b908c226d4c53e62b3e6df65c89dc3c7a0e6e07f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/dashboard.py":{"size":6576,"mtime_ns":1782651340000000000,"hash":"753703fbbe8ddc02d8fbdae78df4abd1448f5ce5878e2f0390111360fdc300b3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":16637,"mtime_ns":1785807172285029476,"hash":"e64e316ab276224ca0574ec9bc8730b67e8658459f6f0bfb4915ccad0958a177"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/plans.py":{"size":18251,"mtime_ns":1786955259140296590,"hash":"d8afadc3101075459f50f24b2a8dcf8210b31e93ca4486d6e60cbd48a891e1e6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/public_inventory.py":{"size":6968,"mtime_ns":1782790898000000000,"hash":"79aa205d2e5e89ed45dd7b95068b93e3f6db82ee9258b0331b21d6c8ab551582"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/weighing.py":{"size":15133,"mtime_ns":1785807184507708871,"hash":"69a9b973a3c30f447358a6d7fbb7aa52dbac7301c1f726e233063c51b0403a5d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/leave.py":{"size":6916,"mtime_ns":1782790854000000000,"hash":"6e03239433bbaecc54f72fa2aba2578573ae6c7fc881f287ef57dafed1a0f1b5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/menu.py":{"size":30932,"mtime_ns":1782790854000000000,"hash":"4e9de047e67ff365d17ac28d30e1baa72cfa3c651caa1b9776e225fc07da0e58"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/monitor.py":{"size":2789,"mtime_ns":1782790854000000000,"hash":"5c13164e49d7ecb6836cf8e65a705fccd518399b85d3be2318c9581a98bacd51"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/__init__.py":{"size":1401,"mtime_ns":1784428053000000000,"hash":"dea849a84ab13ec8daf7782c055f04682fb763bbfd2f184e37ace15312421905"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/base_data.py":{"size":33195,"mtime_ns":1786887371449952277,"hash":"945a79914744ae3a97c0c8c042a0d87480dd5e12f403fa3a8d760f48e77fe3d0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/freight.py":{"size":10543,"mtime_ns":1783760751000000000,"hash":"2d64ca83553dbfc928887171941761114c5db012b9c4a01d34e2b522902bac38"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py":{"size":13443,"mtime_ns":1785202430756770222,"hash":"b14a59968214a71d272cc6fbfc2555a9ea39eb8174697a75bec673bdfda1b074"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/io_order.py":{"size":12552,"mtime_ns":1785484571840900864,"hash":"c1508e2c882a86f5dc3982e2262762704a0c6ec3f15cbbca688e51ccefa6a4c4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/menu_badges.py":{"size":1203,"mtime_ns":1783257582000000000,"hash":"05dfdc446281abd9c3b273ebae2f9cbc4efe681fdc0ab288a77903e9e2bf83c7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/ocr.py":{"size":1889,"mtime_ns":1784035957000000000,"hash":"1de70651a8c1c9e0e208bdccb45d0b9c7e7a0f8f9a663941bdbd5ae278234b1a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py":{"size":63091,"mtime_ns":1787198432497700137,"hash":"6a868b319f6884d79b898d827288ad2695fcc36e84547bbe7bff9891b92b7b10"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py":{"size":7534,"mtime_ns":1785969250566459071,"hash":"0d02ed1398fb72e2d78fa2c371eec74f8b4f6cd771d8b59fdff05091519276f3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_site.py":{"size":10018,"mtime_ns":1785969013811688695,"hash":"e117273ae089bd4668dbe169bc3bd995d8e72adda2bcb74324df974588759f6a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py":{"size":15410,"mtime_ns":1785969005314446819,"hash":"e7576554b07578dd6968018fa37ca764f6ac7ba2eb375197494a4630506d0dcf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":35423,"mtime_ns":1785967888456938238,"hash":"38786a7594853423e2258dab66ae1d034ab107e572808ec14fa5061b761c6849"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/transport_address.py":{"size":6737,"mtime_ns":1784993134000000000,"hash":"e7cc69318bb266a6fb28a9e8163b16e459b879e6041b226d9870477d3bf1c378"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/vehicle_maintenance.py":{"size":7793,"mtime_ns":1782695447000000000,"hash":"79033735d527926ac082200de0b89a122c53db3cbdf5fb33e3cc69f74dd017f5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/vehicle_recharge.py":{"size":8824,"mtime_ns":1782693867000000000,"hash":"f084b6fb3e80de0455ee9cfcc857ae5814b79497786367380f3a375b16c4bf85"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/vehicle_urea.py":{"size":6696,"mtime_ns":1782696220000000000,"hash":"750ecae5cdcc857031e618b87ffa9b28607bd47e72ecf6dc7ebbe51003682df3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/public.py":{"size":12667,"mtime_ns":1786197474707909148,"hash":"c8ec7432a0ea688d90e80af3bb4c1fc6bc69c462fc46e8fe4e629ee879565753"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/workflow.py":{"size":21202,"mtime_ns":1782790854000000000,"hash":"3950dd8d9855f5ed33a0e15883f7e442c4e26bc51672209b1e68ce0d0c9ce399"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930000000000,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930000000000,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930000000000,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":10876,"mtime_ns":1782790001000000000,"hash":"b39f128b6612589ea6ac5babd30752e9585b3af07b82bb1ad53c9e3c0d90816f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":11971,"mtime_ns":1782701669000000000,"hash":"0b84c32828939e6102bb3647691fa8f04b1f68e0e0e9f28127374cc44e19a11c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1122,"mtime_ns":1782219602000000000,"hash":"fb9fea8983524e3891357016b6546d982c4a82cb782fc01425f70472d4338b6b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":7457,"mtime_ns":1782790841000000000,"hash":"34bac56e1c2cb6215f4b5fa2dc32d77d4b4abca51428819eebf4afd269cc51cf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1473,"mtime_ns":1782650780000000000,"hash":"678d9ff99b5c89575ef47e5c9e61d495f364917fd6cfb2b322c4d5035d3ba359"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/config.py":{"size":7336,"mtime_ns":1786698748826032377,"hash":"f1c64d502228fac0c423b6e693ea4da31ddcee2bb1ad66f22bbb7509281ede0b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930000000000,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":8432,"mtime_ns":1784993108000000000,"hash":"16fd3ff8a3dde7397d55829d83c8541f6cbfb11145bfa8f2ae4e28fcaf4e2f60"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1510,"mtime_ns":1782790847000000000,"hash":"8bc9c8ae62e2be2c6920036582ba448dfcd1711c41cebb62274ff6bc6ee14b0b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/db_auth.py":{"size":2500,"mtime_ns":1782790853000000000,"hash":"4988b71d4e54b326c333872b34743914d67b15fb753c1b0231e9b00b366458a4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930000000000,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/delete_guard.py":{"size":3572,"mtime_ns":1782687610000000000,"hash":"223d91c51a1677b6a4b7802d5571af14d5cda8bc45e4e757b1f2150990a69bce"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930000000000,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930000000000,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930000000000,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/oper_log_context.py":{"size":868,"mtime_ns":1782699327000000000,"hash":"064c356f3f0fbabc454311445f02d375b965c2c055ddc51386d4dad50ac3337a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/oper_log_decorator.py":{"size":5312,"mtime_ns":1782701254000000000,"hash":"e476146985da29ad8cb77064d10314470546a8a52f6026a75fdbadd3fee34288"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/oper_log_infer.py":{"size":1767,"mtime_ns":1782699326000000000,"hash":"4346307abeb03020a7069f560556b9954cf50203efb6ac65b0a4b9644b6a9b2d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930000000000,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/redis_client.py":{"size":1691,"mtime_ns":1782790834000000000,"hash":"e5d84d7433ce745da7a37fb46dff5d5eb6ae027ef0efbf406da0c9c7fb6089ad"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930000000000,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930000000000,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930000000000,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":16487,"mtime_ns":1786075281717710498,"hash":"2392d8ccfea66b088160fb59163c663e6c7d5aab9ebdab4a515c785fdc31c520"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410000000000,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930000000000,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930000000000,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930000000000,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930000000000,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4562,"mtime_ns":1782699354000000000,"hash":"f233bde579c4f6c7f2fd6030878c5946fb5dd5e247efaf4fe80d3f48622c19a8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930000000000,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930000000000,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410000000000,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/clue.py":{"size":25820,"mtime_ns":1783155705000000000,"hash":"3526af7e7e79d505911690355890ccdb3a1c30d302534ffdc8626a454cc2499b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/clue_follow.py":{"size":8493,"mtime_ns":1782687674000000000,"hash":"54881f876d1842ee4a344d049ea4b5bac18b243535338077cb3eb3ec8b60e9c1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py":{"size":11229,"mtime_ns":1782649305000000000,"hash":"fbc3b4f3356256787839cc5b2a6f8dff41dcf9eb27c791e427e816e3ba14e094"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":10482,"mtime_ns":1782687664000000000,"hash":"f4e3a684dd7a6c7c927e10e8e1e0c108c151b963777b85c5b74d7e7871f3a438"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py":{"size":104081,"mtime_ns":1787132857357401187,"hash":"56e31876461af01cfca87646bfdda4a11e9d552158ff83912447ed6b9fa27d56"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_approval.py":{"size":15176,"mtime_ns":1786365604770395775,"hash":"8384859847239b6379ed2694bcf4b96b06c5e0ac666a4d368ed3da8c083cf540"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py":{"size":15057,"mtime_ns":1787130846141770880,"hash":"fbdb0a8ecbf5ab776ed42863ecbd66429442117a05f02c4afb835588e90b13a9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":27151,"mtime_ns":1786094657376202500,"hash":"143ae3ea59ca45377aef5a66141f074d257c6097c55a3d609316829b9c09f163"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":8121,"mtime_ns":1782687665000000000,"hash":"ec67fc7667847017a8d8b5a276f5c75328bda7fa360746d80c7890de3f6d4b76"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237000000000,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/data_scope_helpers.py":{"size":3358,"mtime_ns":1782650085000000000,"hash":"b0aab03bc7b3afb2faf39410e9881b65e6a2eeecba592d1655b5b9359fb4dbdd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":7446,"mtime_ns":1782687666000000000,"hash":"e0f2069c43cd272e5f061d30b47a42140ac37aa26379985fc781f8a3851aa44d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/opportunity.py":{"size":42231,"mtime_ns":1782687666000000000,"hash":"75f54438002e070076fe37ec2211c5fd67bf4aebd2607ac94db15e30d6f634d8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_follow.py":{"size":10069,"mtime_ns":1783821986000000000,"hash":"06c9f3deab3472b20429c12a618ae2d4d6efd3afa2353ac44cd52651a596af4c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_product.py":{"size":10346,"mtime_ns":1782687669000000000,"hash":"40b497a41ce4003e128dc305abedc54e01dbaad8a8f7bc1ecec1662a3953a1ed"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8816,"mtime_ns":1782687680000000000,"hash":"779f7f46e7ef8bfba27390d56fa071dfd3a8446d9d3b3361003b1c239f7169aa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/price_letter.py":{"size":13292,"mtime_ns":1784122560000000000,"hash":"1edbd17d41fcc4205faf15de5ce47aecc5459a39d06a920689379a65cdb9c3d9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":38290,"mtime_ns":1786094315681124376,"hash":"0ee3854167f55e5f23e090e2679ec8d882f79ef98d660e82b1f9f2381d3006be"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote.py":{"size":51800,"mtime_ns":1786365631647346096,"hash":"0c7f4464407d643f24e55244e1024a966fac9483b0a4b30f580ad4bdee558901"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_approval.py":{"size":10020,"mtime_ns":1786365604675762048,"hash":"1ad6152ab48fb4171b11066eb0f7b5cef0b7b204c0a47432d4b1c77a47213bcd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py":{"size":14114,"mtime_ns":1786184473623076262,"hash":"d38197b231dbafe35fb0e6c3dd38ab15bd88e58ab6d4904a2a00c73ef653c578"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_share_log.py":{"size":4277,"mtime_ns":1782650254000000000,"hash":"5bfbf7ce2918f9ecdbbca6fdce17d200cd52cdc71b2dfb44ac126a36ca0ed734"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5642,"mtime_ns":1782649310000000000,"hash":"f954dc5479f42a52fdb3f05ad9076fdbe43e569bae85299fca6c8f37c7323cde"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/supplier_info.py":{"size":7182,"mtime_ns":1784996460000000000,"hash":"2c244898e16084f533aa42a0a3b45106a99515ebf627d37557b22549fd1f0035"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6593,"mtime_ns":1784993073000000000,"hash":"a636f1c45bd0dd0b2e6c337061f3d1ce4119b130d444d6b31bf7f1be4782fa67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5379,"mtime_ns":1784993069000000000,"hash":"750a883eb752a96e26f22267171a941345201afa9d2ff243c4c4569d02a735ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5456,"mtime_ns":1784993071000000000,"hash":"d7f64d813e31ed3751b6399245ba502f953644569c75dce0a98598d38b0efde2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":961,"mtime_ns":1784993074000000000,"hash":"ba2c043bc078010880031293f6e2f0f01e9b820d191ff6989bf65983903f063c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4765,"mtime_ns":1782687678000000000,"hash":"847095009bddac2d77dcbb485bcc57cbe168ff874989c197f49f2a28675d2525"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7600,"mtime_ns":1782688282000000000,"hash":"36951a77088782d80500bfa6266b46a564a670e10b70af7a28cdee8c50741098"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/monitor/__init__.py":{"size":1,"mtime_ns":1780242127000000000,"hash":"0592c62ce1172d93aca98cbd9aaa54b9c2668022abf3581249516472db312293"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/monitor/oper_log.py":{"size":6673,"mtime_ns":1782699352000000000,"hash":"0586702734f693ee099af38d407c71cc0a840153f93174699c5a5201e0a9acbe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":2688,"mtime_ns":1785469127578334497,"hash":"88d704b7041a2ae458860c7a93357cff50bc5a8164939151326c22266f300487"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":5081,"mtime_ns":1784993075000000000,"hash":"12619e8ae3e341e757e8696459241924d761161a629b2804d0e1c3611b4d6a67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9417,"mtime_ns":1782688282000000000,"hash":"008550fe8efce5310afd3d41d944cee4b68d71763a587583f8832855480477f7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002000000000,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6442,"mtime_ns":1784993075000000000,"hash":"a5f9e5ab9008186c0001c480bd702e6217946eedc17b2e35eb25ad06edcfccca"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5659,"mtime_ns":1782688281000000000,"hash":"0192db8ac9c3de42fe8ee58324c77111e152bf4c35fd15c0b16467fe243712f0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":14214,"mtime_ns":1783851628000000000,"hash":"aeac623e3020fee4cdd01e463ced23e4e03539a17c5b57dcbd9d88aac5a4fb4f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":25052,"mtime_ns":1782688290000000000,"hash":"6ca7e3b79e91356a050592b768d7a6749e1bfdb2841a208c7235899603368aec"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/main.py":{"size":7025,"mtime_ns":1786698748399431982,"hash":"2cb034baf57da51c1d07fc7d0ef3687620e16988ea1eaa8ce52f63583b7119d5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":2550,"mtime_ns":1786203409890983484,"hash":"5ce371d64aba4f0dc087642c3764fcb5902bc4349cdb3cf41e3d03918f99c163"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930000000000,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":22271,"mtime_ns":1786953008558635704,"hash":"f5338821b8de425e1bab61f998feb6dd1009a9bee4894c8b024be4dd674c5927"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/crm_models.py":{"size":72710,"mtime_ns":1787130817794794854,"hash":"22c3da1ac23667fab64f4656bea101cd0d76c804a31ef37483f256af84a57923"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8110,"mtime_ns":1782219570000000000,"hash":"249bb0971c263436095a6324457557b6ac5cfc3ca5ac9bc9499a9b4cd21d42bf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/models.py":{"size":37139,"mtime_ns":1786161240583074304,"hash":"b1515a4ef5f689b18d8a76433aaa7f10741ce7f7c89f5a825b33f6eab14adac6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/pl_models.py":{"size":79159,"mtime_ns":1786203406711664433,"hash":"98346be3b4670bef2f70481990fe6f6ad57e59c2854feef8ac91cdc8ef67c8f2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973000000000,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930000000000,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930000000000,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py":{"size":81,"mtime_ns":1780750556000000000,"hash":"07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py":{"size":4603,"mtime_ns":1782688296000000000,"hash":"74b6e8bf6906518f80f16f218f1af74d2c356a6f392a4e8a69466f4179ce0b92"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py":{"size":525,"mtime_ns":1780750871000000000,"hash":"f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/common.py":{"size":1547,"mtime_ns":1782003187000000000,"hash":"a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py":{"size":1668,"mtime_ns":1782688293000000000,"hash":"ac07c7b05fe990e743dd5b4e96a85b59431479ca11b98cce7c340a93dbe99ce1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py":{"size":7714,"mtime_ns":1786953496310041338,"hash":"27892ee6a4d6a7ceda99609559224c7a0a9fde8913e0b339c01a561c8d390027"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py":{"size":1677,"mtime_ns":1782688293000000000,"hash":"f683e5bb7a45d0bae3b3f262c201453155eaaaf2c8d7f14f567a14295a68d2e1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930000000000,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410000000000,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/clue.py":{"size":9417,"mtime_ns":1780215022000000000,"hash":"2676afaecac4bb6da185674a9421dfbd40834ca21520adf66bb6b175fb728677"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840000000000,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":11009,"mtime_ns":1787130826227890833,"hash":"c9e4b8e52daa747e30abf889547945655f211a8b649cb299036093914bcc1a59"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":14744,"mtime_ns":1786094611074108908,"hash":"9c8829288e7508988352317a77a66c350ff44a06daf410c087dd695c0c05f5d4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410000000000,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198000000000,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386000000000,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127000000000,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212000000000,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/price_letter.py":{"size":3994,"mtime_ns":1784122554000000000,"hash":"6cd75fdbbd6a2dc65cf0b0b29e6206910fbd86f8bedf05bb56a8835130b81829"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":9954,"mtime_ns":1786094283314086579,"hash":"a4942bea509eac3ca533c903cc3a776cb3d1748ee7690366a93e526bfadcc324"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/quote.py":{"size":6227,"mtime_ns":1786171088067507315,"hash":"7b2ae18db1e5a57657f695899e15a65f52a20e92cfd40a967574f5b15dc36e72"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410000000000,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/supplier_info.py":{"size":4149,"mtime_ns":1784996454000000000,"hash":"25bc81362d6365c8bd852892890f3ff0c74fd702016cb21104c3bdfa51e2f858"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/__init__.py":{"size":84,"mtime_ns":1780804619000000000,"hash":"5193d61f7204f825551f083e79722805fb2abfd953bb552e80950bb3ff9784a1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/dashboard.py":{"size":514,"mtime_ns":1780804990000000000,"hash":"f2c1b1014d0d769abf32dab3783de65fe7fe327c956ffbfe44adce94542f8892"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/inventory.py":{"size":4095,"mtime_ns":1785807104128333050,"hash":"37a2e0218b67e33fc7ddc479bcb68c8c45ca892a2e88fbdc543f87b05924ae9d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/plans.py":{"size":5023,"mtime_ns":1785807102509773576,"hash":"6f0172acb27799becd86980fa299744a5c8ba404be1b473cc030a05a6f3ec7f6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/public_inventory.py":{"size":1492,"mtime_ns":1783211660000000000,"hash":"ed4e21307ac463410d296a2f8cf53f8e0429187344537bcf1e1212a7affa06a6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/weighing.py":{"size":5494,"mtime_ns":1785807118487481337,"hash":"120c573ad29a51805e5b04d0c2ceeaea08d70200a40ddca7fe36d5fc7d6585f1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930000000000,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930000000000,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/monitor/__init__.py":{"size":1,"mtime_ns":1780242127000000000,"hash":"bb5b318d3cb224c50a2e0286e145f89ea7278437437fd17d7c865d67ad148076"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/monitor/operlog.py":{"size":1069,"mtime_ns":1782699353000000000,"hash":"b9f0a382f8990f69391b26bb75b4538d141d6adadc4260fecaa8b33cb44c063d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py":{"size":5246,"mtime_ns":1787198187913760581,"hash":"e75254bdad34bd2888deb785991e5952bdf086b6658d05aca4a1809384b4538f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py":{"size":18485,"mtime_ns":1785637803204159892,"hash":"834f242f9733612613b7b3fec33dcab61d8fe0885158a5bfa8ebef8e0705dc46"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/datetime_parse.py":{"size":929,"mtime_ns":1782905360000000000,"hash":"7a4eac85768cbeb0ba76f7f478ddadeeacab2498cd9be4070a76e1cfad693cdf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py":{"size":11299,"mtime_ns":1785439224271183303,"hash":"ba898caafbe6c8f4c5729c2521917eeaf92fa3c649626232d326eb255f0c177f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py":{"size":8319,"mtime_ns":1785202429973819450,"hash":"63ec5922aa1e9bdf8c3b7dfc5b0ccb555535cbf949e32a1055237ba86faaa146"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/io_order.py":{"size":6070,"mtime_ns":1785967869052400151,"hash":"0248465907a9647877900c348ee831efb6d8122739eea0862fcd89fa90db0831"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/menu_badge.py":{"size":247,"mtime_ns":1783257567000000000,"hash":"88c31e5ef8cee73327a1a0f36ea7ae0e61fa8f1ae140ad95ed0c0b9c2b4d05f7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py":{"size":27548,"mtime_ns":1787198186955391750,"hash":"2a17154dca48ca289d3b43b9d1195a2ca7bd1770c1978cf7ac8fe19e9af68172"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/resource_snapshot.py":{"size":3823,"mtime_ns":1782793446000000000,"hash":"2d65c990d058d22010f8d4449652eb752c297a046b5d7b3ff6755c3e1cad0cf3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py":{"size":21515,"mtime_ns":1785968996003560422,"hash":"d9c5e5068f0f3af4026d36217a7280c102d3570ef03bae1264b3079068870743"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/transport_address.py":{"size":2604,"mtime_ns":1782906539000000000,"hash":"6548b4b0c8c1d8096ce96ff1d5b523c67b12300f9a3eac66570b0256478a1120"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_maintenance.py":{"size":6563,"mtime_ns":1782695447000000000,"hash":"c34b79f5bcd004c0f6353922492883e4b08e5a6bc229f0265c9af850d235848b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_recharge.py":{"size":6299,"mtime_ns":1782694169000000000,"hash":"4d5ab880c0c3ca91b485e1ba53725005b9f89fe205780d58a738c861dbb7e6f8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_urea.py":{"size":5609,"mtime_ns":1782696196000000000,"hash":"71b7de2f90b3c7c732b59683e5cd4d858288121414a1ff2679c039299f5fb024"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930000000000,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930000000000,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/__init__.py":{"size":34,"mtime_ns":1780750594000000000,"hash":"583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/advance.py":{"size":24037,"mtime_ns":1783746967000000000,"hash":"4834348d099b32b70d14e1b56279dbb385f42519646351d8cb220da8c5fe27f1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py":{"size":1296,"mtime_ns":1780758200000000000,"hash":"308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/attachment.py":{"size":4582,"mtime_ns":1782650868000000000,"hash":"3a6480cd051bd1af733a67e5babcd64f3f74cbe230d72364b599cde8b0c67a5f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/base.py":{"size":3984,"mtime_ns":1784993089000000000,"hash":"dd56d9197b4cddc60570bf5eb1851d4a426ab226858beb95bccb33a839471ea5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py":{"size":4639,"mtime_ns":1784993106000000000,"hash":"2640940d1851d60e7ba515d759a0aa06843b764742ae1ea2fabb95b6a16136f9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":50267,"mtime_ns":1786953507819708163,"hash":"6a3d918b2784fbcca72efd51b5c3b04a76b8598a0b26ce9708611a7a93ba4032"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/storage.py":{"size":3610,"mtime_ns":1785592530823872489,"hash":"9c5f871f6c22e837bfee2fc52af6a06588f6f509441485054ec2a138bc91211e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/workflow.py":{"size":5617,"mtime_ns":1784993093000000000,"hash":"514ea42e366fff44f1becbde6b5bfa219a224517e47dcdec25c8cf803a3ec0b5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx_data_scope.py":{"size":2394,"mtime_ns":1782650938000000000,"hash":"1e8e1dbdcf4bc68c2e30b99015e930bb9522bd1f633e95604ec6a62bdb2b43f3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/crm_quote_pdf.py":{"size":10650,"mtime_ns":1786172982774929079,"hash":"388f78a183375e8673316cfb94df5a00002049d2d639e59e31282c910f884a99"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/__init__.py":{"size":0,"mtime_ns":1780805614000000000,"hash":"2cb780fb722e6dbf2ecea6f6fc19345fb453e1a3c40694ba0ff7465eb7cf7d33"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/auto_generate_plans.py":{"size":4699,"mtime_ns":1780935400000000000,"hash":"d0760cb8155d60e18040bcf6fe41e6964640a3dffd6f4b7bb68678c9f31ab29a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/inventory_id.py":{"size":2574,"mtime_ns":1780934632000000000,"hash":"c5269cbb273d987c296143b83f1287762ce67d7ddeccfb0a72bc70234bad9f12"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/mappers.py":{"size":8976,"mtime_ns":1785807132026824584,"hash":"0501255ba896feb2ac32c24eff8f774aaa4663db1666e31c720087049219ddd8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/plan_helpers.py":{"size":386,"mtime_ns":1780805092000000000,"hash":"5c6ec7612b204e1dcb65c5daf03fa7f8ffa7710cd1ace63be4f7ca00cbf318b8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/product_helpers.py":{"size":2365,"mtime_ns":1785920719535751988,"hash":"6297e4e3ca2f90ae493d90b0b848bc3293e13d99b5246457565841cea18d4391"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/weighing_logic.py":{"size":4110,"mtime_ns":1780804818000000000,"hash":"468ded88a0a4a397a96884580c88c59291c0b6effa897f08f1b3fea7857f9191"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db_data_scope.py":{"size":796,"mtime_ns":1782651142000000000,"hash":"ad4e206ae53e25247ebb004e0ef586077a6e7df0eac7b14973c26b186cffb2eb"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_carrier_service.py":{"size":1735,"mtime_ns":1784957286000000000,"hash":"7ab4f5c5a28b0af2c8ddfc91bbc425a9fc5246956afdfd29ae4ca0af32d73cb6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py":{"size":10270,"mtime_ns":1785643505274516189,"hash":"9c4759dbc0c6f16e2fcfa151939776a81d28297e0fe3a6694515dd3c5df0c242"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py":{"size":7694,"mtime_ns":1783849439000000000,"hash":"7bb0a6d4dfdb1ec11e72e971873791b8e188939e7c6b7328a0a2f4f8986c9d1c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_data_scope.py":{"size":801,"mtime_ns":1782650506000000000,"hash":"0f0275c56a43603e69a030dd1d284cfc7982a7636423cfff6d0e692eb4631cb1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py":{"size":15358,"mtime_ns":1785920723016038676,"hash":"b5a1121fdb3adc56e5733e54e9afd6618a18d3dd64acf59c7a78e65e16add189"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py":{"size":47808,"mtime_ns":1785967238102250242,"hash":"974882f2e0c31bd223d47f441985dcd9f69f6f1eb6b7312ad00107ae6c52ed9d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_link_read.py":{"size":782,"mtime_ns":1782225276000000000,"hash":"6471dfc9a1fbe66223f79490a5827b2422e5ca6932305ccde6aef4b641676a6b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py":{"size":32017,"mtime_ns":1785967896127661595,"hash":"401565a9d71835101da1cad779269c38ad8b45309e9d969fc90cc233ec17fa90"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py":{"size":6108,"mtime_ns":1783258109000000000,"hash":"aec342e2370f584c5ed0024bb08a8346c70e1827c09ab456b4b06e9dfc817d8c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_ocr_service.py":{"size":11166,"mtime_ns":1784036700000000000,"hash":"6f233150e253813a7c9da30e6e5d6046fdea01baa67c2589a332fe511ab795f9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py":{"size":7484,"mtime_ns":1787140670593369229,"hash":"acdabe76ba0ba3ea348011e43b3955c6fcfb25e8e50729af8ccea0131d7fd766"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py":{"size":51310,"mtime_ns":1787195004716748073,"hash":"2056bce5f5e065729625fcd5a37d59a77087ebe309f8b4255ec981df1c1c7a49"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_site_link_read.py":{"size":2362,"mtime_ns":1782225460000000000,"hash":"3b9e1b93d3c4375b6b3adb4476ceb0df356654089d994aef4fea7e4f29266c06"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_transport_resource_snapshot_service.py":{"size":4861,"mtime_ns":1782793450000000000,"hash":"6f94dcb582fe725738a54469e461aa0124b9754b2141cb78d3859ff1a2f25ca9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_transport_site_service.py":{"size":3701,"mtime_ns":1782225248000000000,"hash":"07585f13aaad965c106e88ac26f5f8c58852c0c2bb0bdb91820185133d799219"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_vehicle_maintenance_service.py":{"size":23307,"mtime_ns":1783761151000000000,"hash":"0c7aa346d9879347d6a98c435fadc47873907ca0774147b69acf0d392e00e58b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_vehicle_recharge_service.py":{"size":22641,"mtime_ns":1783760938000000000,"hash":"a4a9377a8243e30dd7d6a8a175c68525009465fdebdeb01230849156dd8b59f4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_vehicle_urea_service.py":{"size":19556,"mtime_ns":1782696213000000000,"hash":"03d389e791e5fac9a5339d1259d342952fced97712c3657e8f791426de32743b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/web_auth_roles.py":{"size":5592,"mtime_ns":1783858473000000000,"hash":"04c2cd67a7ec8190aa7a9db717a722cd347a52279ac3ef5bd284777f0698a904"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/workflow_callback.py":{"size":3584,"mtime_ns":1780108930000000000,"hash":"a033c13c7bee7f4b636198c1efa47f2abba0d890657e52b0b7057568d4d83a52"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/workflow_engine.py":{"size":14042,"mtime_ns":1780113992000000000,"hash":"5c06a59c734f598d5c7ebe95d30f048ba3a97302b938bc9320d97e5a053c7aef"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":2486,"mtime_ns":1787140680379293292,"hash":"4285bf024ef91293fda64a484453f3ca095f3ce521d61159364a7075a22d8af6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350000000000,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/db_auto_plan.py":{"size":949,"mtime_ns":1780805095000000000,"hash":"9f7513cd2e74f9ddfe5cbee4ae58a40ee7a58aaaff051d590b19a6e1b08bb46a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/pl_cert_expiry.py":{"size":711,"mtime_ns":1783208067000000000,"hash":"7c02dbf83fad89c7da757965b545bf77f37792edd0d01d3ed320349b0b60a50b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/__init__.py":{"size":0,"mtime_ns":1780242127000000000,"hash":"a66deceefc987198863f61b8aa1b5715483a69c4a15ef47cd5586c5d8e429b97"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":5144,"mtime_ns":1786953427751879493,"hash":"4814f4efce4e883fc021712647f4b8ab9ebb8bd467fa17d4d1f37787b753f074"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":2363,"mtime_ns":1783745556000000000,"hash":"e8b487a9bb4072356cae7b1b38496c441f9a1534d6807798448e6de97073d669"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py":{"size":9594,"mtime_ns":1780743830000000000,"hash":"b20594507aab09cebc3d540acad04547bf780cac9c885187138f5d64718ed513"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/excel_export.py":{"size":4411,"mtime_ns":1780242127000000000,"hash":"7fbde3fca845e4705487e7f801caee308bcc0c99a9da7d0c99681a96eaaf6076"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/ws/__init__.py":{"size":26,"mtime_ns":1780108930000000000,"hash":"d4357444e9b5b0a8593000fb6e4dc37469ebe008e675bf42ec0d55d463f88fc6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/apply_pl_data_scope.py":{"size":10945,"mtime_ns":1782650517000000000,"hash":"928fe2112c9fd8bab4da7f4fc67d6d247c78187ca3b1a4146cc2fd3d9e04697f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py":{"size":2918,"mtime_ns":1781880510000000000,"hash":"b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/compare_dict_snapshots.py":{"size":11072,"mtime_ns":1783860128000000000,"hash":"cfc98cc72c5e387317cfa0a7670c47067fffe8f2e540d5cd580ee459e173e4ef"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410000000000,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_bx_data.py":{"size":32783,"mtime_ns":1785455807105877935,"hash":"16751fcd542e209535216a0516d78b62eecb81732d7fe0f9ec051fdf811e93b6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_bx_menu_names.sql":{"size":454,"mtime_ns":1783254856000000000,"hash":"d40ab4c556ab285498f4689c21736832deddc754a9a2b7d806e870ccb39fc9ae"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_clue.py":{"size":18423,"mtime_ns":1785455807106788561,"hash":"72b84e497176bc63264c26d891c591c839f9dd9788988043c5752413c1b62a09"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_contract.py":{"size":36352,"mtime_ns":1785469153230627041,"hash":"b78319ae19a0089684e1ffe1993a1b62be2d687ab65a3e69da423247e0d4d4d0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_customer.py":{"size":25235,"mtime_ns":1785455807108557895,"hash":"f30d5a50a28a1130325a9d9db88586bcae9e2a39434f077ded25f847af2ed66f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_opportunity.py":{"size":23720,"mtime_ns":1785455807109188438,"hash":"f98964806f32c3020bdd7d644d930760d6ea3ad5162d5f1d6125494263dd5598"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_payment_invoice.py":{"size":13601,"mtime_ns":1785455807109946855,"hash":"c4af77164dac9ba4195c3d239c9679ea367b92f5f7500139f3b59547525af24e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_product.py":{"size":14973,"mtime_ns":1785457303643810528,"hash":"83b693cbc1a590f7a3cd6af2387e638f28474c230fc6f4c0a2813f343d35d887"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_product_category.py":{"size":16785,"mtime_ns":1785462269008382807,"hash":"35d9a064be6f0ac00b6b2162d77d710a2c4f108824eb78425de2341d576cf7fa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_quote.py":{"size":27580,"mtime_ns":1785455807110995231,"hash":"4ac389eb6cb7437d4f5e8203d9908efec9836046ce8628a5e4be1f8b8ddd52cd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_sys_oss.py":{"size":23401,"mtime_ns":1785468795797340265,"hash":"f2d9da1743e3997bf7361d39ff66eab588d7dd55d2114dc9cf6796f4f697a9c3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_dibang_data.py":{"size":20215,"mtime_ns":1785455807112164732,"hash":"28a49a423a784e70bec424b702f3d58f69b6f847153c061414efdcdabb660d0e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_doc_reminder_menu_group.sql":{"size":1562,"mtime_ns":1783256051000000000,"hash":"82a0ce8c5293f5051967633c1c2e0a1dc60e1fc7c97919c9e0866246bbcbe3d1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_menu_groups.sql":{"size":6367,"mtime_ns":1783256049000000000,"hash":"5f6964d1ea2712d3d72c8f43f08c16597d85fe79f3f54c8be99962090d6c2b67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_delivery_slip_template.sql":{"size":217,"mtime_ns":1783231586000000000,"hash":"e05e3fe7255e6c8a88aceb1aa53d743a4888a34c9fbaa4449c1cb8a275744d68"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_product_legal_use_cert_url.sql":{"size":1180,"mtime_ns":1783253793000000000,"hash":"01105ec581050477087d9bf65528cfe77ce0026d0fb682cba8014c4cdb046db7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_slip_template.sql":{"size":191,"mtime_ns":1783219958000000000,"hash":"e2a17c3df7be5cc0436ef979a48de81eecbe99c03f43662f4b0954a09dfa1305"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no.sql":{"size":203,"mtime_ns":1783240340000000000,"hash":"de9b3c8e1617b9c345b2d4005e4a627f10ded089db89d35f0b389b333b840c08"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no_format.sql":{"size":571,"mtime_ns":1783241697000000000,"hash":"61fc58ebda64c5d6be6bfd374dda99c7134e38dc89031527f71916625c4e36db"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_template.sql":{"size":215,"mtime_ns":1783238744000000000,"hash":"24cf12e21f9f61f49c38e654c0ca655f56a21e5e2364e4c2ca4547dad583272e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_users.py":{"size":28602,"mtime_ns":1785455807113727900,"hash":"f5626fd3ca8bbc16275862080365c3ea2a27fd0f608e2243a284493762a8f735"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration/minio_url.py":{"size":4770,"mtime_ns":1785465354405875664,"hash":"54a1bf95512c0a8b5feeb518ea3af76983bb1b0a3ba645898b07debdb2cc52e9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260711_hide_vehicle_urea_menus.sql":{"size":269,"mtime_ns":1783760394000000000,"hash":"a5f66647cdb4f0f403689b47b804f8099d7d710753823ef3ddc5e7a5a9ca4ca8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_add_finance_dept.sql":{"size":1697,"mtime_ns":1783855927000000000,"hash":"4ce457089ead5c063ae8e1a6d6553416deb43c54a7edddb574ee2572390aba99"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_affiliation.sql":{"size":753,"mtime_ns":1783845019000000000,"hash":"6d450d264921f43c4e74ee4a2bcfc8335d16f77d9e0413267389741a92bf4eb5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_type.sql":{"size":1662,"mtime_ns":1783843576000000000,"hash":"24fcd156f97e2bdf2bd158beb5358fe7159874783a84716c6c18d2565cc8ac1a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_reset_sys_dept.sql":{"size":4517,"mtime_ns":1783855538000000000,"hash":"3795d6127a4dcf55d406be0fe673b8a83655723fe1f07b855e6fe45823d489fa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260713_pl_personnel_cert_split.sql":{"size":3436,"mtime_ns":1783946793000000000,"hash":"ce61899ec7e13f41de08dbc923dd1ff2a1a976603d13c8f09aa6fd5be9c914a2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260714_pl_ocr_usage_month.sql":{"size":1270,"mtime_ns":1784032423000000000,"hash":"d7018a4e5be9760846731440be98e53584d8e1461fc4ea54a0c8db61c666e7fe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter.sql":{"size":11104,"mtime_ns":1784122573000000000,"hash":"548dab479fcde4bf1628ca2093fd7840720473a774a5289b55bfd4f46b902153"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter_bill_price.sql":{"size":901,"mtime_ns":1784122547000000000,"hash":"11a4eb6f3b4d89c1a5141bd9a85e931517984b77ac213f5842dc590f928fe1cf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260719_pl_inbound_outbound_order.sql":{"size":10843,"mtime_ns":1784427911426172052,"hash":"baab6333d8e0865e72a9c474eb642bd5b166f9d70a6db5825d315574f66df069"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/patch_pr3_api.py":{"size":14409,"mtime_ns":1782650231000000000,"hash":"fb4cf4178a4b7c5530999f0c950ed38310dfe81b3168c10117849d6f512be01d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/patch_pr3_api_calls.py":{"size":3345,"mtime_ns":1782650279000000000,"hash":"57732d0beb80ee17b533c78ce0250967fa83c68354ea9d1972275ba1fbc39007"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/patch_pr3_quote_contract.py":{"size":12491,"mtime_ns":1782650163000000000,"hash":"eb6b944df35fda5edb6675b69b00f5a83a75fd78785251d1e81e1788ed439cfe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/refresh_business_role_menus.py":{"size":3812,"mtime_ns":1783858483000000000,"hash":"b2c76109936791e1f624e239b24832237fa0256b38b98578e39825ac215fb166"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/renumber_crm_product_no.py":{"size":9071,"mtime_ns":1785455807114125233,"hash":"320c63801100ea8e9fb62abfb44b3487139377e293310593a877ab2d06e9d2e3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/run_db_auto_generate_plans.py":{"size":1043,"mtime_ns":1780805102000000000,"hash":"3cd8f15b677f21b2873ff384fc0581da264a53ee4318da3c8262101156e3225b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/seed_sys_menu.sql":{"size":82807,"mtime_ns":1784948075068625581,"hash":"b712bc6d4b5a248a26706137f601e26d81bdb7ffdae016ff818a77155afe15a8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/setup_business_roles.py":{"size":14256,"mtime_ns":1783858477000000000,"hash":"ac12df2cf75826931c85f4deb3ae28614e31ea825d0beb3cf351a8d4f5cb1071"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/test_aliyun_driving_license_ocr.py":{"size":5130,"mtime_ns":1784032210000000000,"hash":"13d43c9144c3795b8870fbd900ed14f97ae22ee043e2c265a5151525666abebe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/verify_web_menu_codes.py":{"size":2535,"mtime_ns":1783858485000000000,"hash":"16c9c072b5b80fb309d56823963ebd0dd1f437a3f74d7f82711dd8a7c2de86d2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/start-prod.sh":{"size":7357,"mtime_ns":1782639355000000000,"hash":"ca89869446be74a2bf2367b3b28f448580220859a39a84ad9613ac5fe35a8433"},"/Users/wuzilong/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661000000000,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_data_scope.py":{"size":4660,"mtime_ns":1782649048000000000,"hash":"9545dc65fac7e13bf07ece2ec828ec5957bb115e23d0ac8c996f9c70362a4ecd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_db_inventory_id.py":{"size":586,"mtime_ns":1780934647000000000,"hash":"71a9617d5d0f2c23416686eded204b4c941b47afc3fd6e3facf0c75401e883d9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_delete_guard.py":{"size":1565,"mtime_ns":1782687611000000000,"hash":"5e2a45f63b7296e3a10dfbd4b4716e54370e1439248881d6591cba5c9f6581d6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_dibang_plan_quantity.py":{"size":4258,"mtime_ns":1783777759000000000,"hash":"6af8eb3c1f6c7ad34cd62f1e82e9c6b96737ffd48ba74dda7c5f888c55dd11cd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_personnel_cert_required.py":{"size":3367,"mtime_ns":1785643508814042558,"hash":"4bc3552f4897e80dfc8bc28ea2566bd0ea6839e860d781653088066f57f414e6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/venv.bak.broken/bin/Activate.ps1":{"size":8593,"mtime_ns":1780108930000000000,"hash":"ed2ea10761f2798e8980084d754284d3fcb94f1284ae7085c35c16108fe24846"},"/Users/wuzilong/work/00code/shanxia2.0/backend/DEPLOY.md":{"size":2574,"mtime_ns":1782639356000000000,"hash":"6989c30ab5c99ebf488137e31e5561b4a00d36060716dfad3fc247b673538818"},"/Users/wuzilong/work/00code/shanxia2.0/backend/README.md":{"size":2752,"mtime_ns":1780114581000000000,"hash":"f5def8d25af0556a443c31a73e81f958883b60cfed8b31fac457f2832c2b6d58"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_io_order_enrichment.py":{"size":2319,"mtime_ns":1785967899536094864,"hash":"f46d9a34d0693693f48c0bea5e72d79baa7adecba9c413d5583e1f229e692043"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_io_order_site_feedback_status.py":{"size":3527,"mtime_ns":1785446258255101137,"hash":"fc53fd735e09b39e7cfe085ca6756f87396b6954f7057fde2bfca39524c34276"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_tripartite_cert_gates.py":{"size":2003,"mtime_ns":1784947499000000000,"hash":"312091d1017c2f22195a9317cd6f39c880cd5aa6b27acaf343181319f045ffee"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_carrier_eligible.py":{"size":689,"mtime_ns":1784947707000000000,"hash":"a3093ae31166d40d7836abb3575c0d4d50ff9e9bf23fee8e7a291afdec39fedd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/paste_recognize.py":{"size":1869,"mtime_ns":1785808688386810236,"hash":"69bc7d7ead223c34143e56ed7eb1381b48e07fef4b74b4dd83365e8cca1edab8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py":{"size":9724,"mtime_ns":1785808688436615927,"hash":"38bfbe51fdb8f5bc43c48fc0767e742edfc963761252f32e6868c4341e61af84"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260725_pl_tripartite_menus.sql":{"size":2113,"mtime_ns":1784948072087970834,"hash":"c4897f7cff3c22535726f105d1f2e543eb551f6543e8b256ced85ae2a38ee683"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/invoice.py":{"size":5868,"mtime_ns":1784991682000000000,"hash":"65eced0eea3c4f9567842be545d2eb042c24398d5ff5eeda2aff693fcff06ff2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/invoice.py":{"size":1896,"mtime_ns":1784982228000000000,"hash":"909460b2883e85110e15a56d5755748e1bcb3e26dffac89684440813788e8668"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/invoice.py":{"size":15808,"mtime_ns":1786272473404426378,"hash":"eec75b8a2f81e6fe8f5c6af25625d6d3b0d1cd6ec01151412e2707a4e338e623"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/invoice_ledger.py":{"size":10448,"mtime_ns":1786539462776370778,"hash":"7247589419d1b5c86087def9b33d0e20d8d04b75b4afe7b7481dd96c385d20d8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/crm_supplier_hazard.py":{"size":3425,"mtime_ns":1784998230000000000,"hash":"2365e02c6f2584dd6d18e1ad3c8d3075096777b244cc1430ef913254c61a9442"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_bx_invoice_ledger.py":{"size":1898,"mtime_ns":1786539462170910559,"hash":"ef8ee465df020aaff376deca3b251e13e017dc72856efc07c982b1469e4888a9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_supplier_hazard.py":{"size":855,"mtime_ns":1784996182000000000,"hash":"ce8bd619b1a6dc746541a57eccc095d19ccde3bdb88341995631e15fcfb14bca"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_pl_plan_create_date.sql":{"size":536,"mtime_ns":1785140686875543544,"hash":"0694b0b031a6461d8a8940f7403739a8d20fd018403a02a8f1e0e8bf2bc1490f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_create_date.py":{"size":299,"mtime_ns":1785140895170402200,"hash":"7a05f3fcc2d9a36f08b0801f6fbf6ee4fe58982d9212d7a10a70b8b4d41b6f85"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_crm_product_brand_alias.sql":{"size":4594,"mtime_ns":1785160650030737687,"hash":"f9f6ea6ca8e31cf5622a31f8303fe81174769b7d094645a88dccfcd6484b9cc4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py":{"size":3334,"mtime_ns":1785453570763074999,"hash":"feca7ad16664603f04ee7fa38f03187ecfb70978cc41fcdb47d3fbfb54a11fbc"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py":{"size":7058,"mtime_ns":1785453321817830521,"hash":"a13cd5ea34dabe91b4663551824c3da9fd2a64ac3fcbc46b2b099644f308b457"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py":{"size":5120,"mtime_ns":1785202591782265408,"hash":"d9d9b949cc5f275764b7ea771616141084a0c7cd256dd3262bf532cf4ac0f20f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py":{"size":2440,"mtime_ns":1785453323711185768,"hash":"2a704d8278c46f510fa020cd9aed4ea26fd978262d7fe728287bcfe5726798e9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260731_pl_plan_plan_date_nullable.sql":{"size":223,"mtime_ns":1785439209757662121,"hash":"50a633398cc1c8288c8b5fa221885272ca963c4b777b70102c96632f2d51047a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_feedback_brand_qty.py":{"size":9813,"mtime_ns":1785452749855419713,"hash":"c67d06fc7ac5cc9b3be0c2005f30a4914ca97c27cd5a7c80e7814382cb05c82d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260731_pl_feedback_brand_qty.sql":{"size":4927,"mtime_ns":1785445506581710120,"hash":"618b647158c133824ead60382d2b6e73713ea32a7b2224efedea431e071cc89a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_feedback_brand_qty.py":{"size":3424,"mtime_ns":1785452788497663858,"hash":"1fe2a5c0b1968f864ef22a436b0e13a697977ef09a71c6e8bfda46da25825f90"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_product_display.py":{"size":3590,"mtime_ns":1785451173102957680,"hash":"728e1d79035875ac350201c943241493f04006a2e1f71d7e3e41571eeac721e5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/backfill_crm_customer_license_urls.py":{"size":7789,"mtime_ns":1785467213374029636,"hash":"a0faaa83477187d8b4a9299d1b170f5ea2c5ca3b450fb4437bf1dc30ab1b5b1b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/backfill_crm_contract_attachment_urls.py":{"size":9795,"mtime_ns":1785469147228035015,"hash":"6331fa977cbb794c3ee9cb072692c63b05f23f071ab8df1d0b8368455af3b82c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260731_bx_reimburse_invoice_attachment_id.sql":{"size":784,"mtime_ns":1785473095766881076,"hash":"702c6845b0b936d4a5a06918fcebefd71b38ca4b2dcd7e51ee45af19c77407b6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_approver_setting.py":{"size":3632,"mtime_ns":1785560604338687232,"hash":"7442687a3dde4a0a354064c3fef7503d37c9ce3f1991873e64befd2d1812ba4a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_quote_approver_setting.py":{"size":1015,"mtime_ns":1785560055190832342,"hash":"2a7e91833de33ed92ac8e9157746f15fd7a9e7c5f25bf043dfb0dd7c77859715"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/quote_approver_setting.py":{"size":291,"mtime_ns":1785560601528774704,"hash":"e978cab24ee46f23b7432bb6f411e760f2d8d782a924efe811608c2200fcba0a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260801_crm_quote_approver_setting.sql":{"size":2117,"mtime_ns":1785560449173091996,"hash":"66c92fbf3031539484e241934c14fee379a70b1b179a8b8345c5ae70c8498f14"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_approver_setting.py":{"size":2875,"mtime_ns":1785561463337293690,"hash":"7c3aeed13e66f67159220b323298b414a9d1b1f9ca6b679dca31532be86a132e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/contract_approver_setting.py":{"size":294,"mtime_ns":1785561469090499071,"hash":"fca8a7cb3a75c82e9c3395f2471e20dfcdc469a8fd299c9c6ce5e79576a6c3fb"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260801_crm_contract_approver_setting.sql":{"size":1903,"mtime_ns":1785561454940491268,"hash":"f81470b97da71283b9d3defc81fd177cc2fea1dbd487febaebf7a8f24a73c71f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260802_pl_vehicle_personnel_photo_urls.sql":{"size":468,"mtime_ns":1785637173564154921,"hash":"852680d19f6b71def29908a718ae92d9169a025e9d78808b9f8d000bdc61fb52"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_vehicle_personnel_photo_schema.py":{"size":1231,"mtime_ns":1785637623899998875,"hash":"e4c64e35446196f1de7ba0e719be054d019ec8b075f5ea8c128b8a60c59695aa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_contract_no_align.py":{"size":3126,"mtime_ns":1785825791491415499,"hash":"ff831959d54053ab544d9c377133a120cd4caa8aac6650da16a36150444d78e6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/public_vehicles.py":{"size":2231,"mtime_ns":1785768179156681871,"hash":"7a98a605c181669b08d642c45a0dd6fa523939af5125b5ad0bae0de2ee95b2f0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_public_db_vehicle_plates.py":{"size":323,"mtime_ns":1785768224738481967,"hash":"616ff1488b2b17e419c4e4ec368aa2764afea116722010cad785218a4e12259a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_contract_name_from_parties.py":{"size":6224,"mtime_ns":1785828057088217919,"hash":"9a59bc109ddc024a07b33b7392a05d483860e2214950a5e3552dee57e207be2f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_resolve_driver.py":{"size":1013,"mtime_ns":1785919856405819727,"hash":"d88b4043fc8e89abcf86c7939f9c0072b79a598a2c9d0429863bbaefad603fed"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_transport_arrange_optional_driver.py":{"size":1644,"mtime_ns":1785920340176946279,"hash":"04877379c17cc22060c20331e036b8fd38356f19472ff3f44a5bcbc24c599d03"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_db_resolve_crm_product.py":{"size":1264,"mtime_ns":1785920708079005468,"hash":"f882adf7b1fbc4eb6a597a32d7854c8e70fdb647e36575077fca62ebcd5d27fd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_contract_reedit_to_draft.py":{"size":762,"mtime_ns":1785923790041814966,"hash":"7148ba8438800787cfdf57ae6f9a036c937365b7fb3488446a9ee8f0eec627cb"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_product_options_keyword.py":{"size":806,"mtime_ns":1786094317931053244,"hash":"9af3eec71149b686820da37b4b1648c303572d9915a1852f29d6d009c824223c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_freight_unsettled_q_filter.py":{"size":670,"mtime_ns":1785967257899846757,"hash":"70f5f3ba569ad9bda0cf82b2c1715098f7e4456a94ec3ac4c8166f68707ca64d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260806_pl_plan_pickup_delivery_contact.sql":{"size":355,"mtime_ns":1785967900218676221,"hash":"91ff55c654521b8604a30a8cd71c1219fcaae1e8e851684121a5c17937d447af"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_public_link_archived.py":{"size":3479,"mtime_ns":1785969243308729198,"hash":"f45e090c9f94693e70c4316e4201524d108696b394dad3f32d141119e467a36d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_cert_list_filters.py":{"size":1103,"mtime_ns":1785970837922953790,"hash":"702a2b5e78b7bc830c43349093dec22e441557293ff3ea42144a87080dab6329"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260806_pl_plan_product_cert_urls_multi.sql":{"size":506,"mtime_ns":1786026516384661236,"hash":"888d02bc77f0d9d037b55a45a54654dcefa5a4d8753e81af10c1b064df67a4ec"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/pinyin_abbr.py":{"size":1728,"mtime_ns":1786092671463202484,"hash":"6249344ef1bba8eb8ffe88b78a5415cded10cc964936c9a21d6664cd07dc2574"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/backfill_name_pinyin_abbr.py":{"size":3672,"mtime_ns":1786094939020069795,"hash":"95641ff2c1f983d666f9b542abd95e67678ce0f3a0c060b9b2894d124f72b48e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_name_pinyin_search.py":{"size":1997,"mtime_ns":1786094657392019008,"hash":"0b6a447b8b8288199ac9281eeb381219dc772015dae2d5dbe9bfdc7549f3bcd2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pinyin_abbr.py":{"size":1914,"mtime_ns":1786093018755774342,"hash":"9e1e22aacecbc371c65cf98b765f1801142a42ce86f00b595f731730de01462b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/menu_favorite.py":{"size":5893,"mtime_ns":1786164467195259167,"hash":"47abb770c311107aa9175afa9e763f725ae632aa142701dd0920b1045bc0201e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/menu_favorite.py":{"size":448,"mtime_ns":1786164463958357878,"hash":"1e59cabf9fb61d54069a3e2f6989a35caf7e3f7923c147b3c8e311f9e414e98f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_menu_favorite_crud.py":{"size":333,"mtime_ns":1786161663839656046,"hash":"90f5142c48c2ac1f45779795f1bf98d4586e8021a51661d67749a1a997ee6317"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_crm_contract_freight.sql":{"size":485,"mtime_ns":1786168838831711328,"hash":"03a5817604775db7b6fac63b4c2525b29209157c95d3b62d0832e10b3ade5dad"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_crm_barrel_deposit.sql":{"size":640,"mtime_ns":1786171064998893402,"hash":"635246d391b3c51cc942b0bd0626bec0d8a1e01b040982eaf4d8247cfcced69d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_internal_customer.py":{"size":359,"mtime_ns":1786203402295831206,"hash":"b0943b9c2c5798ca37a7070f830dfd25e3136c6cc44b68445d387838ed0a8d93"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_pl_plan_contract.sql":{"size":1307,"mtime_ns":1786203401315396321,"hash":"70fc937d300892df9e01020e7efce19320d671a3d68d8ef2a90ff511c31eaada"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_pl_plan_legacy_party_contracts.py":{"size":6021,"mtime_ns":1786252409838644271,"hash":"d1c4e2da790cccb70a334e9c31e35d7468d02ebcd3a7ee94be148ca793f2bdb2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_approval_reedit.py":{"size":7025,"mtime_ns":1786365642443908289,"hash":"b8b8b8fdc2eb6227d0bef5e8904a48952b75097add1f8016db21789157fa3d05"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py":{"size":4067,"mtime_ns":1786962300778553519,"hash":"0ffac728b16a5a2153ad7f61999733bf0107474c7c168143090d93dd96bbe765"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/public_duty.py":{"size":1302,"mtime_ns":1786782175107488581,"hash":"202fd6efb33db564f8bacad0a2b81f4332f4a458a63503cf0d7d0c4e4b9c0ce7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/duty_models.py":{"size":4232,"mtime_ns":1786969299168761229,"hash":"5c44b013bb45705a1f89da86f2e7c6b9015db972c3aa4395efbe1d0c6c0758d9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py":{"size":948,"mtime_ns":1786968917036717876,"hash":"5693a7f057783ea39450664370af3e8412086849dff0a2c3daef92a9792dca08"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py":{"size":20181,"mtime_ns":1786968943299017145,"hash":"b06344e9450efc3f07a37025f1044f30f32b8a3b4efe962bfc8772dc02e66ca5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260814_duty_schedule.sql":{"size":5119,"mtime_ns":1786780828212847883,"hash":"6dd48ca0af157368eaf593b4fab9572717fe181b268df01910d33ef429fe5a30"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py":{"size":16221,"mtime_ns":1786962525029358386,"hash":"35f0ab1db2f53d2ea61dc92dcbfc3e0b35ef6e9e7e436785bdd086cf455c9fd6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260815_duty_menu_portal_fix.sql":{"size":2448,"mtime_ns":1786862443519086520,"hash":"e8b344901dbe1a098895f53eb58b6b774d4d9dc98c4314af19e3d723c630d46a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/crm_settlement_clause.py":{"size":1100,"mtime_ns":1786936843880889885,"hash":"39bdd102736139f915fbde5bf0492b1ab5bea171e50886fbebdc91d11ecc26f0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260816_crm_settlement_method_options.sql":{"size":1283,"mtime_ns":1786863543577427878,"hash":"1a77cf2cbbd8c7bd36ace3c5746333533dfc67d9538b5e503d20fce0adae3839"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_settlement_clause.py":{"size":1171,"mtime_ns":1786936844055122834,"hash":"1d5399fb65ab99a9192d53cf6669591a805fb7acac0b783cec2de73b8f263c41"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260817_bx_reimburse_detail_occur_date.sql":{"size":248,"mtime_ns":1786952998755687610,"hash":"47f947e6b9c44f9cd43eab4933391a0a066c8afe47c7f150dea100d0fa527556"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_bx_optional_date.py":{"size":676,"mtime_ns":1786953396821732245,"hash":"ad6002f2e2381ce3492f0655a9e9d25c12e79eab39b25cad11eac1ce6681d32c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260817_duty_staff_role.sql":{"size":669,"mtime_ns":1786961977381233883,"hash":"18ef78c4e3f3098f98391595d410d9d3208b27e911a51b2dd069a087c21552b6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/reimburse_import.py":{"size":22009,"mtime_ns":1787059477540105703,"hash":"3d8335fb43d7521ab956b91b4f0db97865d1eac9567e6b16fc6f64514554dd7e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/excel_list_validation.py":{"size":1727,"mtime_ns":1787058157688083229,"hash":"c5ee81774768064f85a0a1c10fe26560c5cd8688dc9a350db20183e8e6317c08"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_bx_reimburse_import.py":{"size":6968,"mtime_ns":1787059491763657804,"hash":"c1dcf74bdb897989de6275dc50c8f2c4d215d0c255667ad0aa13327491917511"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/id_card.py":{"size":1013,"mtime_ns":1787140660375276708,"hash":"2a22466e4135cbb3a407c4024083962e356c0173d6bcc98ef37c1826ac2b0e01"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/pl_personnel_age.py":{"size":788,"mtime_ns":1787140671776513916,"hash":"b143ed12c8ead08503cc1301305c805dc0bd3a15e6657486b497996e546884ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_id_card_age.py":{"size":722,"mtime_ns":1787140680915434955,"hash":"82a6853f305295d6b577bc170e57b9ea0eb878a6a049e905754f361e040a7a5f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py":{"size":6356,"mtime_ns":1787198420325008002,"hash":"7f2d45991608e35ed30c870095c6ff893a2061295082b1b4181140e72439fd67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py":{"size":2024,"mtime_ns":1787198187913738457,"hash":"7f93087d723da02d189f822810735774d7cb82ad518231edd10acb7586012bbf"}} \ No newline at end of file +{"/Users/zlwu/work/00code/shanxia2.0/backend/start-prod.sh":{"size":7357,"mtime_ns":1782639355476060453,"hash":"ca89869446be74a2bf2367b3b28f448580220859a39a84ad9613ac5fe35a8433"},"/Users/zlwu/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661446983244,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982281973984,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py":{"size":6280,"mtime_ns":1782790852770448643,"hash":"8f9da799977bee7134d87a26ff8434ac5ef8eabb0b7368dd537eee49ad7fd00b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":2207,"mtime_ns":1783208067881286091,"hash":"313e6da0e91d743ce891dd283458c79b50b24c4d909dc96ca7b3fd9d2bfa5013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":7457,"mtime_ns":1782790841500516545,"hash":"34bac56e1c2cb6215f4b5fa2dc32d77d4b4abca51428819eebf4afd269cc51cf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930724444498,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930725155710,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py":{"size":6958,"mtime_ns":1784032424448146538,"hash":"c2fb44aedb880733de28afa7f92d2c1c681eb600f821bbeba2bcda3933e5bc37"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":11971,"mtime_ns":1782701669198208175,"hash":"0b84c32828939e6102bb3647691fa8f04b1f68e0e0e9f28127374cc44e19a11c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1510,"mtime_ns":1782790847265601586,"hash":"8bc9c8ae62e2be2c6920036582ba448dfcd1711c41cebb62274ff6bc6ee14b0b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":14141,"mtime_ns":1782855136810943216,"hash":"3ae2c413c10898a8adb3d6773870bafbfbc18c739c10e0e8b4f765b4b5ca6c08"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":8043,"mtime_ns":1782648925694296304,"hash":"626dff86937e5cacec634ecbc61cd53d3763d760223a1d4ec7cd11f64e59a220"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":10876,"mtime_ns":1782790001926627098,"hash":"b39f128b6612589ea6ac5babd30752e9585b3af07b82bb1ad53c9e3c0d90816f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/models.py":{"size":36012,"mtime_ns":1782699345666495916,"hash":"01f974f182660ec4f215bcacc31eddadd7899d60d95aa19a61046579a994512a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":2186,"mtime_ns":1784035957226402359,"hash":"5af681963b36af57eaca7fdfc7f707255008ffba18df1a8c2d5903f58fcbf159"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930807298966,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930808197763,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930810184774,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973062398026,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930808681891,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930808144846,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930808426681,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930810245983,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930808614098,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002126415047,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":5164,"mtime_ns":1782688288640487823,"hash":"370a7c2b5de64c6b72f98bcf7fbbc166ba2a7f5673c6e1426b10bcc88220bb27"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":14214,"mtime_ns":1783851628178366109,"hash":"aeac623e3020fee4cdd01e463ced23e4e03539a17c5b57dcbd9d88aac5a4fb4f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5537,"mtime_ns":1782688289303121533,"hash":"f4edc5824466d0096b3b70aeea7b4460a9fa54ca0929421759b625b60c56c505"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5659,"mtime_ns":1782688281816798167,"hash":"0192db8ac9c3de42fe8ee58324c77111e152bf4c35fd15c0b16467fe243712f0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930726090799,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930725878047,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9417,"mtime_ns":1782688282481859519,"hash":"008550fe8efce5310afd3d41d944cee4b68d71763a587583f8832855480477f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7600,"mtime_ns":1782688282878700273,"hash":"36951a77088782d80500bfa6266b46a564a670e10b70af7a28cdee8c50741098"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6525,"mtime_ns":1782688288935534527,"hash":"a7bf593eff76d08b338f48f9a035fa1493f4ca88867bf9fdf4e9af06b6165759"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4562,"mtime_ns":1782699354647000111,"hash":"f233bde579c4f6c7f2fd6030878c5946fb5dd5e247efaf4fe80d3f48622c19a8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5418,"mtime_ns":1782688289691482227,"hash":"5bd3fd93c60956dab0268e9f4e6cf315d0a9c9656d649f4abb40858ba1d32911"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":1012,"mtime_ns":1780108930727448890,"hash":"7de1eb94b9fbb897a7b362ffdb5df5ab1020aa7247c7c37a2a2a2aa5cdbac8ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":25052,"mtime_ns":1782688290021142467,"hash":"6ca7e3b79e91356a050592b768d7a6749e1bfdb2841a208c7235899603368aec"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6604,"mtime_ns":1782688283203296227,"hash":"ebb38fcd527fdac4dcbf0632ac926e4cbe95dddb5fab79c3142b010e7a48ea7e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930726010257,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4765,"mtime_ns":1782687678100096646,"hash":"847095009bddac2d77dcbb485bcc57cbe168ff874989c197f49f2a28675d2525"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/public.py":{"size":12682,"mtime_ns":1783858998986861832,"hash":"b98ac3f3bc95c2b42c481ac9ae9137528e55845d425e5d2184827dc424304e42"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":665,"mtime_ns":1780804649232229595,"hash":"f720195209c1783d8b2526220a086c2ae2769d76a12bd7df74136f5432c7b75f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/menu.py":{"size":30932,"mtime_ns":1782790854866245387,"hash":"4e9de047e67ff365d17ac28d30e1baa72cfa3c651caa1b9776e225fc07da0e58"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/admin.py":{"size":50055,"mtime_ns":1782855138852859245,"hash":"a5e74057222e3359f6077b2fd05b2db4d058ec2702243cc449bff8d448d44a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/workflow.py":{"size":21202,"mtime_ns":1782790854865038715,"hash":"3950dd8d9855f5ed33a0e15883f7e442c4e26bc51672209b1e68ce0d0c9ce399"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/leave.py":{"size":6916,"mtime_ns":1782790854865571301,"hash":"6e03239433bbaecc54f72fa2aba2578573ae6c7fc881f287ef57dafed1a0f1b5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_callback.py":{"size":3584,"mtime_ns":1780108930810395025,"hash":"a033c13c7bee7f4b636198c1efa47f2abba0d890657e52b0b7057568d4d83a52"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_engine.py":{"size":14042,"mtime_ns":1780113992914903818,"hash":"5c06a59c734f598d5c7ebe95d30f048ba3a97302b938bc9320d97e5a053c7aef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/web_auth_roles.py":{"size":5592,"mtime_ns":1783858473640363111,"hash":"04c2cd67a7ec8190aa7a9db717a722cd347a52279ac3ef5bd284777f0698a904"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/ws/__init__.py":{"size":26,"mtime_ns":1780108930810617026,"hash":"d4357444e9b5b0a8593000fb6e4dc37469ebe008e675bf42ec0d55d463f88fc6"},"/Users/zlwu/work/00code/shanxia2.0/backend/README.md":{"size":2752,"mtime_ns":1780114581291841672,"hash":"f5def8d25af0556a443c31a73e81f958883b60cfed8b31fac457f2832c2b6d58"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py":{"size":66592,"mtime_ns":1784122553836870448,"hash":"1a0a09e5f5d9eb2d5e18e2f7d851287442ee370a3abfbf0b487ee4b4a18d43b3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410213315055,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":7820,"mtime_ns":1783820526204158517,"hash":"b8d626eca1b0fc6b0216a66afb1cf234155310d3077d940d5158111f873a414b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410210254759,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":25974,"mtime_ns":1783820522540308906,"hash":"6d1fb7bc06a4f16c729b1b226377ffa38b9b47bf1cc75310dcefbb8f6e480574"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":151289,"mtime_ns":1784119033682636742,"hash":"ceaa64369ef66891310f391836c580beefd5a69854b3a5a0539a419744a311b0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350147822837,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410210198550,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212734233591,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198698231150,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410213934514,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":13811,"mtime_ns":1783823672041317102,"hash":"b91167282158aeb11046dccc4bf2f29a13307a0413b3d7b3c860b17d37f8ad4a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840975948859,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8816,"mtime_ns":1782687680547203228,"hash":"779f7f46e7ef8bfba27390d56fa071dfd3a8446d9d3b3361003b1c239f7169aa"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":8121,"mtime_ns":1782687665525772610,"hash":"ec67fc7667847017a8d8b5a276f5c75328bda7fa360746d80c7890de3f6d4b76"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":23825,"mtime_ns":1782687664490640155,"hash":"5d8934ae6318de87b0761686fe491a7ec2be02792a85d84308c383af3193fa8a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":10482,"mtime_ns":1782687664918872966,"hash":"f4e3a684dd7a6c7c927e10e8e1e0c108c151b963777b85c5b74d7e7871f3a438"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410245078685,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410215906642,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237342131933,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5642,"mtime_ns":1782649310467813967,"hash":"f954dc5479f42a52fdb3f05ad9076fdbe43e569bae85299fca6c8f37c7323cde"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386885207867,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":1584,"mtime_ns":1780201410212966513,"hash":"9349799b02a3531d8e1b46f9f70d3b6630afd7306663c779bd11f25448a16013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":7446,"mtime_ns":1782687666050313280,"hash":"e0f2069c43cd272e5f061d30b47a42140ac37aa26379985fc781f8a3851aa44d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127112297110,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":10565,"mtime_ns":1784195323916483606,"hash":"45d9dfeb58bda22227fcd242c738086431616466bb8ee9f1466927d75d4bec48"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity.py":{"size":42231,"mtime_ns":1782687666592409903,"hash":"75f54438002e070076fe37ec2211c5fd67bf4aebd2607ac94db15e30d6f634d8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract.py":{"size":92433,"mtime_ns":1783763318740360571,"hash":"b2362db2f2df750afc1c2263f5e6ac1ccd5daa8b93ad5650d56028f452597837"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/__init__.py":{"size":1,"mtime_ns":1780242127108406092,"hash":"bb5b318d3cb224c50a2e0286e145f89ea7278437437fd17d7c865d67ad148076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/operlog.py":{"size":1069,"mtime_ns":1782699353340106185,"hash":"b9f0a382f8990f69391b26bb75b4538d141d6adadc4260fecaa8b33cb44c063d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/__init__.py":{"size":1,"mtime_ns":1780242127112307360,"hash":"0592c62ce1172d93aca98cbd9aaa54b9c2668022abf3581249516472db312293"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/oper_log.py":{"size":6673,"mtime_ns":1782699352542520022,"hash":"0586702734f693ee099af38d407c71cc0a840153f93174699c5a5201e0a9acbe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/monitor.py":{"size":2789,"mtime_ns":1782790854865860510,"hash":"5c13164e49d7ecb6836cf8e65a705fccd518399b85d3be2318c9581a98bacd51"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/clue.py":{"size":9417,"mtime_ns":1780215022189075651,"hash":"2676afaecac4bb6da185674a9421dfbd40834ca21520adf66bb6b175fb728677"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_follow.py":{"size":8493,"mtime_ns":1782687674053739962,"hash":"54881f876d1842ee4a344d049ea4b5bac18b243535338077cb3eb3ec8b60e9c1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue.py":{"size":25820,"mtime_ns":1783155705954031080,"hash":"3526af7e7e79d505911690355890ccdb3a1c30d302534ffdc8626a454cc2499b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py":{"size":11229,"mtime_ns":1782649305846991404,"hash":"fbc3b4f3356256787839cc5b2a6f8dff41dcf9eb27c791e427e816e3ba14e094"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_follow.py":{"size":10069,"mtime_ns":1783821986040417425,"hash":"06c9f3deab3472b20429c12a618ae2d4d6efd3afa2353ac44cd52651a596af4c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_product.py":{"size":10346,"mtime_ns":1782687669972916544,"hash":"40b497a41ce4003e128dc305abedc54e01dbaad8a8f7bc1ecec1662a3953a1ed"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py":{"size":9594,"mtime_ns":1780743830255260394,"hash":"b20594507aab09cebc3d540acad04547bf780cac9c885187138f5d64718ed513"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/__init__.py":{"size":0,"mtime_ns":1780242127043319167,"hash":"a66deceefc987198863f61b8aa1b5715483a69c4a15ef47cd5586c5d8e429b97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/excel_export.py":{"size":4411,"mtime_ns":1780242127113233948,"hash":"7fbde3fca845e4705487e7f801caee308bcc0c99a9da7d0c99681a96eaaf6076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/supplier_info.py":{"size":3679,"mtime_ns":1780242127112269527,"hash":"8b797e9dee6ac7ff806a8ea23bef5fedce648502ea23287e1b417e9f96d22c2e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/supplier_info.py":{"size":6916,"mtime_ns":1782687684650105460,"hash":"0b66714e36609688f7ce79ecda0679d20df115d2d64a0dff1cc0fc76df7dca6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py":{"size":13126,"mtime_ns":1782650413581368849,"hash":"cd2fc23852ead3c4db19e34bc33c1560fc5f5d4cd7cf51b61def8bf37c44c853"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/quote.py":{"size":5961,"mtime_ns":1780745856749183842,"hash":"29c52786df396aededd0850e3c8a3a36f3fb6a952af03adbe1768dae212b6804"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote.py":{"size":48137,"mtime_ns":1782687675213433843,"hash":"a2ff5c5b74a2becd0949aab6aea8cf63440cce2c0bb22e1a1661463e0b2e963d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py":{"size":10537,"mtime_ns":1782687676011228777,"hash":"57d9d5b4fc2bc8b68c0388a4b8a9c1322539ed7e538764fc23521916429e07c5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_share_log.py":{"size":4277,"mtime_ns":1782650254630170341,"hash":"5bfbf7ce2918f9ecdbbca6fdce17d200cd52cdc71b2dfb44ac126a36ca0ed734"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_approval.py":{"size":8816,"mtime_ns":1782650314936479798,"hash":"736353b8c2c5073d260e007a166234bd7d57958bcc738c56a1d39cfb22381180"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/crm_quote_pdf.py":{"size":9877,"mtime_ns":1780242127112382277,"hash":"fec04892fccccc3601fbeb012c92c77110496910be44102de40b4610148fa58a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_quote_routes.py":{"size":25633,"mtime_ns":1783825326810765171,"hash":"c51b70766aae85dbc537bf5b48a2c350c73ea8e93bcad2a9660d8d45c6d0979d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_approval.py":{"size":13958,"mtime_ns":1780763324103831772,"hash":"3d7fbbb90728568a2577e52d8986ccbec8f599d04a0ef9e330939d1fe729bc98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":29547,"mtime_ns":1783825526614169736,"hash":"95969972c0773528b91d9728d303feae5ca7187d89a49495d5129dcedffc19dc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_template.py":{"size":2897,"mtime_ns":1780229101351431207,"hash":"935adfc7659e31201cd83ba8387bf6abcb39e7cdc63fa4692d699ed874cf113b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_change.py":{"size":2496,"mtime_ns":1780229100306468735,"hash":"05af42f088f6cc400c1e3445d4a2c96670edf482328b361aa4f231230d958729"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_template.py":{"size":11858,"mtime_ns":1780229131746659196,"hash":"b9bdbe6a33c933aefcb25cc57e94b2fd2dc75f8e5822434f3912aa0153dfca00"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_change.py":{"size":15985,"mtime_ns":1780229123819597506,"hash":"771b110d3d136c45106dd61171c724c559b5b4bf572ea7b8c2b648f0bfe629c1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_sub_routes.py":{"size":25165,"mtime_ns":1782650354912882614,"hash":"b2733fd74cb7e6cbe6518fc5a5700e387601afc087be09f395f3c61372099847"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1122,"mtime_ns":1782219602888987090,"hash":"fb9fea8983524e3891357016b6546d982c4a82cb782fc01425f70472d4338b6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1473,"mtime_ns":1782650780925056463,"hash":"678d9ff99b5c89575ef47e5c9e61d495f364917fd6cfb2b322c4d5035d3ba359"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":2363,"mtime_ns":1783745556349035158,"hash":"e8b487a9bb4072356cae7b1b38496c441f9a1534d6807798448e6de97073d669"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":4679,"mtime_ns":1782003396630684570,"hash":"bc3f798cfbc359e0327d72e3c0513fe9cbaee196d0d85bcf6567cf5df4211d97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16644,"mtime_ns":1782003187247224106,"hash":"37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py":{"size":81,"mtime_ns":1780750556881734563,"hash":"07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py":{"size":1547,"mtime_ns":1782003187605255900,"hash":"a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py":{"size":777,"mtime_ns":1780751360180065853,"hash":"3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py":{"size":1668,"mtime_ns":1782688293668634639,"hash":"ac07c7b05fe990e743dd5b4e96a85b59431479ca11b98cce7c340a93dbe99ce1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py":{"size":1677,"mtime_ns":1782688293973889288,"hash":"f683e5bb7a45d0bae3b3f262c201453155eaaaf2c8d7f14f567a14295a68d2e1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py":{"size":3362,"mtime_ns":1782650913604714906,"hash":"c6a142011870516822cf11cff16a86c56908f00680eb7c6219c8441c9b63632a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py":{"size":4984,"mtime_ns":1782650913326708063,"hash":"84285aab7499ce9280156c5814b2dc4fff42841803dd673cc6bfdc6eed498283"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py":{"size":4366,"mtime_ns":1782650887981843546,"hash":"15321fe1df77a555af579474434e3b401bd042555d19ea81a066ef754915612b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/__init__.py":{"size":34,"mtime_ns":1780750594045301798,"hash":"583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py":{"size":5446,"mtime_ns":1782650919964956073,"hash":"1d72733147e0ed997094d7f92d1c1f5e1e108093a50e8e523b3b016c3dd676e4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py":{"size":3931,"mtime_ns":1782687617846731919,"hash":"dba80b8f4e26bc59efd2b2aad6bd430c0315133a98bfbbe1b93113b60baba8b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py":{"size":525,"mtime_ns":1780750871480000584,"hash":"f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py":{"size":4603,"mtime_ns":1782688296833335474,"hash":"74b6e8bf6906518f80f16f218f1af74d2c356a6f392a4e8a69466f4179ce0b92"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py":{"size":5758,"mtime_ns":1782790898570675189,"hash":"e88b9181e7c1a839074656ce2260cd6f693821402a24f08dd1c0ef3c160f8fa8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py":{"size":13370,"mtime_ns":1783745567004734594,"hash":"3097a75d86d09951d7de7df10a32f5aedcf6ce11279bdf6dfe0005ec9d8a7be1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py":{"size":4582,"mtime_ns":1782650868959755751,"hash":"3a6480cd051bd1af733a67e5babcd64f3f74cbe230d72364b599cde8b0c67a5f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py":{"size":24037,"mtime_ns":1783746967707088251,"hash":"4834348d099b32b70d14e1b56279dbb385f42519646351d8cb220da8c5fe27f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py":{"size":3656,"mtime_ns":1780750869826924187,"hash":"ac98980bd5b6cbab6a9394b6debc678b050cf4df969eccbc5f2d419b615937cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py":{"size":5638,"mtime_ns":1782688293517624966,"hash":"aa47d8e87982a4077ff067dff2955db9eb67171d6368bc636c1eea17ea7682f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":15431,"mtime_ns":1783747621462206303,"hash":"dae4bfc4be69ca2f3ee8fd2e9e3bd6053a2904c8f7a0c83e536f2dd71874f918"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":34743,"mtime_ns":1783747614591546341,"hash":"ba8f3ff0304a6668bde3c2e6c3e15427153389f7320b943fb261d1d947b41d1e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py":{"size":15715,"mtime_ns":1783745581266319098,"hash":"0d0b8823013a63f91baee0ea19b56f203e70fb1e450f873cfeb634a6cd017f54"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py":{"size":1296,"mtime_ns":1780758200904804714,"hash":"308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8110,"mtime_ns":1782219570945208920,"hash":"249bb0971c263436095a6324457557b6ac5cfc3ca5ac9bc9499a9b4cd21d42bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":544,"mtime_ns":1782011200096708592,"hash":"822060230e155b8704feb447b908c226d4c53e62b3e6df65c89dc3c7a0e6e07f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/__init__.py":{"size":0,"mtime_ns":1780805614160787709,"hash":"2cb780fb722e6dbf2ecea6f6fc19345fb453e1a3c40694ba0ff7465eb7cf7d33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/base.py":{"size":2754,"mtime_ns":1780802262496001324,"hash":"d2fd88aa376aa5914125381cf61a4ae0f343657d6bd7db1f9fe1254e7aba5b2f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/vehicle.py":{"size":591,"mtime_ns":1780802980783200520,"hash":"d87e4262b344e02a7be21534e382e7b75f5543f599d673ddc046134ad0e8ba4e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/__init__.py":{"size":84,"mtime_ns":1780804619867600032,"hash":"5193d61f7204f825551f083e79722805fb2abfd953bb552e80950bb3ff9784a1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicle.py":{"size":3780,"mtime_ns":1780802985736476363,"hash":"aeb49bdd49cb5091c37275b856396e75bcd24557e3a1b58ef668910b1b0aff64"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/vehicle.py":{"size":4776,"mtime_ns":1780802999039302982,"hash":"cf32c66499ca86285561b573d222837ecc76c3fa51b0091b802485fbde8e2bf2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plan.py":{"size":1788,"mtime_ns":1780803836065964235,"hash":"30452b2f7fa19f5677475ce08b3e355dae2440d80d2e9049f8417de01d822863"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plan.py":{"size":4167,"mtime_ns":1780803836065953735,"hash":"acac159dedfacb36f02982b700b2a7c7a8fbb4644eb89c3b0c13871941917864"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan.py":{"size":9619,"mtime_ns":1780803836065902943,"hash":"e311f2b8b5e7785db764216fbecfd2830a11569ccb827a00c8bd3a2ba3804383"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/inventory.py":{"size":3948,"mtime_ns":1782219604456801044,"hash":"19ea80e59a1309518ad6183a6b0b8751401f4724d7b5101d47defc2417ec36c8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":16423,"mtime_ns":1783156035144390497,"hash":"901602a8fe362aec9b89ac6f2ee578f1eeb105fcf12a1a6c3ff4ef98f4ad1ef3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory.py":{"size":10663,"mtime_ns":1780803878293678536,"hash":"e38abdd78010b0e96dcb65ed826de03a752b40e3355546ed06a4b07640cf7013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/weighing.py":{"size":5347,"mtime_ns":1780935341753643087,"hash":"f734c66269b713a840d7ce6c1c6150bd2dc00b114b09963362202d119c82301e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/weighing.py":{"size":14940,"mtime_ns":1782687688848020877,"hash":"71d143eb05d0d3f785f5962892bde64dee3c2937139c975b52af62628f308d46"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing.py":{"size":24042,"mtime_ns":1780804029884092079,"hash":"bc9d5cb59bf90597db0e0a1c9afcef5c2b429c3945c92be34bfdc1e77d26ba28"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_auth.py":{"size":2500,"mtime_ns":1782790853674329877,"hash":"4988b71d4e54b326c333872b34743914d67b15fb753c1b0231e9b00b366458a4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plans.py":{"size":4876,"mtime_ns":1780935329287069452,"hash":"474cb68905249cd5a6237443a412d49cb28af2e0cec61c9bf5c34ec54db1240a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/master_data.py":{"size":619,"mtime_ns":1780925759582999052,"hash":"6f6b2c2e1478efce74b8c6e6fb058d914b8b79adfadf2fea2d91cb55d3f9cdce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicles.py":{"size":4748,"mtime_ns":1780925781827569662,"hash":"8f8b32dfbf4046cfa0b6645d211732596f7027d46244d9c50132425220065483"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plans.py":{"size":17098,"mtime_ns":1783156035873015369,"hash":"bd2c8344e2ab765ceb2a2c91f5cf2facea319ae66c9097f5468a7f5d753b67dd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/mappers.py":{"size":6955,"mtime_ns":1782219619253708711,"hash":"b9e97f66a0a248d06c2f960c3f5ac4fb3369cc976c16709227dee0cc1513d221"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing_logic.py":{"size":4110,"mtime_ns":1780804818442134500,"hash":"468ded88a0a4a397a96884580c88c59291c0b6effa897f08f1b3fea7857f9191"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/dashboard.py":{"size":514,"mtime_ns":1780804990870580151,"hash":"f2c1b1014d0d769abf32dab3783de65fe7fe327c956ffbfe44adce94542f8892"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/dashboard.py":{"size":6576,"mtime_ns":1782651340330906738,"hash":"753703fbbe8ddc02d8fbdae78df4abd1448f5ce5878e2f0390111360fdc300b3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/db_auto_plan.py":{"size":949,"mtime_ns":1780805095845033710,"hash":"9f7513cd2e74f9ddfe5cbee4ae58a40ee7a58aaaff051d590b19a6e1b08bb46a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan_helpers.py":{"size":386,"mtime_ns":1780805092108105489,"hash":"5c6ec7612b204e1dcb65c5daf03fa7f8ffa7710cd1ace63be4f7ca00cbf318b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/auto_generate_plans.py":{"size":4699,"mtime_ns":1780935400833764213,"hash":"d0760cb8155d60e18040bcf6fe41e6964640a3dffd6f4b7bb68678c9f31ab29a"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/run_db_auto_generate_plans.py":{"size":1043,"mtime_ns":1780805102157096922,"hash":"3cd8f15b677f21b2873ff384fc0581da264a53ee4318da3c8262101156e3225b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_dibang_data.py":{"size":20215,"mtime_ns":1782011225157870526,"hash":"28a49a423a784e70bec424b702f3d58f69b6f847153c061414efdcdabb660d0e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory_id.py":{"size":2574,"mtime_ns":1780934632326984469,"hash":"c5269cbb273d987c296143b83f1287762ce67d7ddeccfb0a72bc70234bad9f12"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/product_helpers.py":{"size":2106,"mtime_ns":1780935268573313971,"hash":"cea6b0697eb64081a79d18ab95f0f0477714505a7aef82a41672197b15fc8b14"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_db_inventory_id.py":{"size":586,"mtime_ns":1780934647395760353,"hash":"71a9617d5d0f2c23416686eded204b4c941b47afc3fd6e3facf0c75401e883d9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py":{"size":61386,"mtime_ns":1784032430468998611,"hash":"e23b4653b806a1917eba187d8a3584dff598ad74bc21c8295c179abf0bcfe17e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py":{"size":22053,"mtime_ns":1783754594278544472,"hash":"f3a69a96b7916cb34e23e673b3155d83f7d9698b2582cfae96dedc392da8e6b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py":{"size":17945,"mtime_ns":1783211732481443217,"hash":"477ebd0c4c084cf8bccd10865e4703b6b34829d30b791c32232d96c1bac2947f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py":{"size":5012,"mtime_ns":1783242582112287271,"hash":"1dced39f250919efc4aa798daee1efef3adcca054c7483843536c455919ff106"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py":{"size":11275,"mtime_ns":1783213205154827373,"hash":"557f9e9f06ab6f18eb33f54a579fb8ab0f6992d9b25bb530a2ec49d5b2365708"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py":{"size":7742,"mtime_ns":1783242580346813026,"hash":"9b57e84bea4844ce93220773544064ed6979c5823b07831bc5fe734b6dc860d3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py":{"size":48150,"mtime_ns":1783945795484267217,"hash":"a9a876816af12e43b3fa6b9dc748b74b7107f0cae590e68a2a789945617c620e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":33087,"mtime_ns":1783155250374329483,"hash":"6f7703d37ce761406d42f3be4e53ee85be0d3e43e5b880401087dde47ec6608f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py":{"size":1243,"mtime_ns":1784035957226411568,"hash":"7d66d74042036571b769e5364616560597a3c3347cb9dea6cfbe04c40483b5e2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py":{"size":10543,"mtime_ns":1783760751060550793,"hash":"2d64ca83553dbfc928887171941761114c5db012b9c4a01d34e2b522902bac38"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py":{"size":33513,"mtime_ns":1783849851800999450,"hash":"133db64dcfad9ae687b90084eb8f1b5f713ebabce852bba26b600cab52e51c50"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py":{"size":13188,"mtime_ns":1783242583174353699,"hash":"da03959cdab792ef503edae6ee27e45f9b5a8db1c63cdbcd97bafa85acc9be71"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py":{"size":2918,"mtime_ns":1781880510604174541,"hash":"b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py":{"size":19762,"mtime_ns":1783849843323086946,"hash":"21d29a63b2dbd9178f2239d109c4e71e668c2caf85788dcecc34e7533f0df4e6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py":{"size":6707,"mtime_ns":1783845044115228598,"hash":"34f3d1d723890e294aac765a66d7e86ca87f4288f42cec674bb9151de091fe22"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py":{"size":7694,"mtime_ns":1783849439910099822,"hash":"7bb0a6d4dfdb1ec11e72e971873791b8e188939e7c6b7328a0a2f4f8986c9d1c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py":{"size":39798,"mtime_ns":1783768766029953703,"hash":"0e0620d2878e4b28c560daf8095d30e8e8a281653d40baf01ef94e899ce114e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py":{"size":9697,"mtime_ns":1783209147246415813,"hash":"aac3cfd1a30df824d1a4867c5b358e3155e19a051dbaffbae89c995b55767a8c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py":{"size":15310,"mtime_ns":1783777749440894312,"hash":"c506eb84c104ce63b98cde5b16644f16ddcf4e3aa335089bedcb4c267d21fc0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/public_inventory.py":{"size":1492,"mtime_ns":1783211660985345577,"hash":"ed4e21307ac463410d296a2f8cf53f8e0429187344537bcf1e1212a7affa06a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/public_inventory.py":{"size":6968,"mtime_ns":1782790898570930774,"hash":"79aa205d2e5e89ed45dd7b95068b93e3f6db82ee9258b0331b21d6c8ab551582"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_inventory_link_read.py":{"size":782,"mtime_ns":1782225276143253698,"hash":"6471dfc9a1fbe66223f79490a5827b2422e5ca6932305ccde6aef4b641676a6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_site.py":{"size":8470,"mtime_ns":1783211738132414332,"hash":"08745e00bfa7bd756fbeef7ae7a1d3bf957d6403da51cf7825def02a38502d01"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_site_link_read.py":{"size":2362,"mtime_ns":1782225460524562610,"hash":"3b9e1b93d3c4375b6b3adb4476ceb0df356654089d994aef4fea7e4f29266c06"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_transport_site_service.py":{"size":3701,"mtime_ns":1782225248175867714,"hash":"07585f13aaad965c106e88ac26f5f8c58852c0c2bb0bdb91820185133d799219"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py":{"size":47560,"mtime_ns":1783213204589333188,"hash":"53a61d4da0cd2e2d0bac74abcca13de3f3d506b603453811d8f1cd53fa50b358"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_data_scope.py":{"size":4660,"mtime_ns":1782649048011371782,"hash":"9545dc65fac7e13bf07ece2ec828ec5957bb115e23d0ac8c996f9c70362a4ecd"},"/Users/zlwu/work/00code/shanxia2.0/backend/DEPLOY.md":{"size":2574,"mtime_ns":1782639356701497576,"hash":"6989c30ab5c99ebf488137e31e5561b4a00d36060716dfad3fc247b673538818"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/data_scope_helpers.py":{"size":3358,"mtime_ns":1782650085670691361,"hash":"b0aab03bc7b3afb2faf39410e9881b65e6a2eeecba592d1655b5b9359fb4dbdd"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/patch_pr3_quote_contract.py":{"size":12491,"mtime_ns":1782650163950860693,"hash":"eb6b944df35fda5edb6675b69b00f5a83a75fd78785251d1e81e1788ed439cfe"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/patch_pr3_api.py":{"size":14409,"mtime_ns":1782650231443625388,"hash":"fb4cf4178a4b7c5530999f0c950ed38310dfe81b3168c10117849d6f512be01d"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/patch_pr3_api_calls.py":{"size":3345,"mtime_ns":1782650279067732462,"hash":"57732d0beb80ee17b533c78ce0250967fa83c68354ea9d1972275ba1fbc39007"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_data_scope.py":{"size":801,"mtime_ns":1782650506729785291,"hash":"0f0275c56a43603e69a030dd1d284cfc7982a7636423cfff6d0e692eb4631cb1"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/apply_pl_data_scope.py":{"size":10945,"mtime_ns":1782650517176615737,"hash":"928fe2112c9fd8bab4da7f4fc67d6d247c78187ca3b1a4146cc2fd3d9e04697f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx_data_scope.py":{"size":2394,"mtime_ns":1782650938092205819,"hash":"1e8e1dbdcf4bc68c2e30b99015e930bb9522bd1f633e95604ec6a62bdb2b43f3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db_data_scope.py":{"size":796,"mtime_ns":1782651142571517234,"hash":"ad4e206ae53e25247ebb004e0ef586077a6e7df0eac7b14973c26b186cffb2eb"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/delete_guard.py":{"size":3572,"mtime_ns":1782687610196676295,"hash":"223d91c51a1677b6a4b7802d5571af14d5cda8bc45e4e757b1f2150990a69bce"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_delete_guard.py":{"size":1565,"mtime_ns":1782687611517772849,"hash":"5e2a45f63b7296e3a10dfbd4b4716e54370e1439248881d6591cba5c9f6581d6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_carrier_service.py":{"size":3479,"mtime_ns":1783848338604396640,"hash":"7d12991ffd2e3d7b768aaa587d7f9ae1ed4d641f65ec3f053ed103fc74a5a005"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_recharge.py":{"size":6299,"mtime_ns":1782694169098881801,"hash":"4d5ab880c0c3ca91b485e1ba53725005b9f89fe205780d58a738c861dbb7e6f8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/vehicle_recharge.py":{"size":8824,"mtime_ns":1782693867411719704,"hash":"f084b6fb3e80de0455ee9cfcc857ae5814b79497786367380f3a375b16c4bf85"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_vehicle_recharge_service.py":{"size":22641,"mtime_ns":1783760938743438422,"hash":"a4a9377a8243e30dd7d6a8a175c68525009465fdebdeb01230849156dd8b59f4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_maintenance.py":{"size":6563,"mtime_ns":1782695447503836332,"hash":"c34b79f5bcd004c0f6353922492883e4b08e5a6bc229f0265c9af850d235848b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/vehicle_maintenance.py":{"size":7793,"mtime_ns":1782695447583143336,"hash":"79033735d527926ac082200de0b89a122c53db3cbdf5fb33e3cc69f74dd017f5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_vehicle_maintenance_service.py":{"size":23307,"mtime_ns":1783761151873696556,"hash":"0c7aa346d9879347d6a98c435fadc47873907ca0774147b69acf0d392e00e58b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_urea.py":{"size":5609,"mtime_ns":1782696196169930337,"hash":"71b7de2f90b3c7c732b59683e5cd4d858288121414a1ff2679c039299f5fb024"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/vehicle_urea.py":{"size":6696,"mtime_ns":1782696220189638136,"hash":"750ecae5cdcc857031e618b87ffa9b28607bd47e72ecf6dc7ebbe51003682df3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_vehicle_urea_service.py":{"size":19556,"mtime_ns":1782696213546483763,"hash":"03d389e791e5fac9a5339d1259d342952fced97712c3657e8f791426de32743b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/oper_log_decorator.py":{"size":5312,"mtime_ns":1782701254052728785,"hash":"e476146985da29ad8cb77064d10314470546a8a52f6026a75fdbadd3fee34288"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/oper_log_infer.py":{"size":1767,"mtime_ns":1782699326717654441,"hash":"4346307abeb03020a7069f560556b9954cf50203efb6ac65b0a4b9644b6a9b2d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/oper_log_context.py":{"size":868,"mtime_ns":1782699327268762002,"hash":"064c356f3f0fbabc454311445f02d375b965c2c055ddc51386d4dad50ac3337a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/redis_client.py":{"size":1691,"mtime_ns":1782790834895168051,"hash":"e5d84d7433ce745da7a37fb46dff5d5eb6ae027ef0efbf406da0c9c7fb6089ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/resource_snapshot.py":{"size":3823,"mtime_ns":1782793446819247296,"hash":"2d65c990d058d22010f8d4449652eb752c297a046b5d7b3ff6755c3e1cad0cf3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_transport_resource_snapshot_service.py":{"size":4861,"mtime_ns":1782793450356380638,"hash":"6f94dcb582fe725738a54469e461aa0124b9754b2141cb78d3859ff1a2f25ca9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/datetime_parse.py":{"size":929,"mtime_ns":1782905360746020898,"hash":"7a4eac85768cbeb0ba76f7f478ddadeeacab2498cd9be4070a76e1cfad693cdf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport_address.py":{"size":2604,"mtime_ns":1782906539731495489,"hash":"6548b4b0c8c1d8096ce96ff1d5b523c67b12300f9a3eac66570b0256478a1120"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport_address.py":{"size":6875,"mtime_ns":1782907484528042124,"hash":"7880a37b53dc2e88534ca5750097792ee7e893c94d87bf1eecd8b6055fbba181"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/pl_cert_expiry.py":{"size":711,"mtime_ns":1783208067000967398,"hash":"7c02dbf83fad89c7da757965b545bf77f37792edd0d01d3ed320349b0b60a50b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_delivery_slip_template.sql":{"size":217,"mtime_ns":1783231586212866839,"hash":"e05e3fe7255e6c8a88aceb1aa53d743a4888a34c9fbaa4449c1cb8a275744d68"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_slip_template.sql":{"size":191,"mtime_ns":1783219958449266456,"hash":"e2a17c3df7be5cc0436ef979a48de81eecbe99c03f43662f4b0954a09dfa1305"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_template.sql":{"size":215,"mtime_ns":1783238744737524455,"hash":"24cf12e21f9f61f49c38e654c0ca655f56a21e5e2364e4c2ca4547dad583272e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no.sql":{"size":203,"mtime_ns":1783240340132373787,"hash":"de9b3c8e1617b9c345b2d4005e4a627f10ded089db89d35f0b389b333b840c08"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no_format.sql":{"size":571,"mtime_ns":1783241697391655899,"hash":"61fc58ebda64c5d6be6bfd374dda99c7134e38dc89031527f71916625c4e36db"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_product_legal_use_cert_url.sql":{"size":1180,"mtime_ns":1783253793703960795,"hash":"01105ec581050477087d9bf65528cfe77ce0026d0fb682cba8014c4cdb046db7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/menu_badge.py":{"size":247,"mtime_ns":1783257567212910729,"hash":"88c31e5ef8cee73327a1a0f36ea7ae0e61fa8f1ae140ad95ed0c0b9c2b4d05f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/menu_badges.py":{"size":1203,"mtime_ns":1783257582921626135,"hash":"05dfdc446281abd9c3b273ebae2f9cbc4efe681fdc0ab288a77903e9e2bf83c7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py":{"size":6108,"mtime_ns":1783258109621359209,"hash":"aec342e2370f584c5ed0024bb08a8346c70e1827c09ab456b4b06e9dfc817d8c"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_bx_menu_names.sql":{"size":454,"mtime_ns":1783254856670799736,"hash":"d40ab4c556ab285498f4689c21736832deddc754a9a2b7d806e870ccb39fc9ae"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/seed_sys_menu.sql":{"size":82266,"mtime_ns":1784119136237565207,"hash":"e0c15f9bd4525b6e447a7e8da3aa6bf93c14c47a1b99dc5cb4bee9dfd1a60e8b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_menu_groups.sql":{"size":6367,"mtime_ns":1783256049450807031,"hash":"5f6964d1ea2712d3d72c8f43f08c16597d85fe79f3f54c8be99962090d6c2b67"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_pl_doc_reminder_menu_group.sql":{"size":1562,"mtime_ns":1783256051207137180,"hash":"82a0ce8c5293f5051967633c1c2e0a1dc60e1fc7c97919c9e0866246bbcbe3d1"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260711_hide_vehicle_urea_menus.sql":{"size":269,"mtime_ns":1783760394518896877,"hash":"a5f66647cdb4f0f403689b47b804f8099d7d710753823ef3ddc5e7a5a9ca4ca8"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_pl_dibang_plan_quantity.py":{"size":4258,"mtime_ns":1783777759829460303,"hash":"6af8eb3c1f6c7ad34cd62f1e82e9c6b96737ffd48ba74dda7c5f888c55dd11cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py":{"size":10503,"mtime_ns":1783946967244318920,"hash":"07991890446a106b2d520e5e3c65e27af90c13d00945516ef1ce9bdf2e389879"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_type.sql":{"size":1662,"mtime_ns":1783843576747470605,"hash":"24fcd156f97e2bdf2bd158beb5358fe7159874783a84716c6c18d2565cc8ac1a"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_affiliation.sql":{"size":753,"mtime_ns":1783845019912997576,"hash":"6d450d264921f43c4e74ee4a2bcfc8335d16f77d9e0413267389741a92bf4eb5"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_add_finance_dept.sql":{"size":1697,"mtime_ns":1783855927743333340,"hash":"4ce457089ead5c063ae8e1a6d6553416deb43c54a7edddb574ee2572390aba99"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/setup_business_roles.py":{"size":14256,"mtime_ns":1783858477739135462,"hash":"ac12df2cf75826931c85f4deb3ae28614e31ea825d0beb3cf351a8d4f5cb1071"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260712_reset_sys_dept.sql":{"size":4517,"mtime_ns":1783855538627076795,"hash":"3795d6127a4dcf55d406be0fe673b8a83655723fe1f07b855e6fe45823d489fa"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_users.py":{"size":28602,"mtime_ns":1783855936414773748,"hash":"f5626fd3ca8bbc16275862080365c3ea2a27fd0f608e2243a284493762a8f735"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/verify_web_menu_codes.py":{"size":2535,"mtime_ns":1783858485781974173,"hash":"16c9c072b5b80fb309d56823963ebd0dd1f437a3f74d7f82711dd8a7c2de86d2"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/refresh_business_role_menus.py":{"size":3812,"mtime_ns":1783858483854587001,"hash":"b2c76109936791e1f624e239b24832237fa0256b38b98578e39825ac215fb166"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/renumber_crm_product_no.py":{"size":9071,"mtime_ns":1783861492796558653,"hash":"320c63801100ea8e9fb62abfb44b3487139377e293310593a877ab2d06e9d2e3"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_product.py":{"size":13287,"mtime_ns":1783860925852062495,"hash":"3e5dd462f2ad6218d2547b66db741132d0179037e6dd3ac24ddaa02a5b970d4b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_product_category.py":{"size":15583,"mtime_ns":1783860690842141129,"hash":"9cbdfdf3335a366aebd0a605431b3952ea9aab26bd564d075d501479ae0b20f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/compare_dict_snapshots.py":{"size":11072,"mtime_ns":1783860128258640426,"hash":"cfc98cc72c5e387317cfa0a7670c47067fffe8f2e540d5cd580ee459e173e4ef"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_sys_oss.py":{"size":22858,"mtime_ns":1783885816251409459,"hash":"20f59e7e19a0c4415bdf17cef32a31db63220346688b3dbe06bc2c52a42d475c"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration/minio_url.py":{"size":4770,"mtime_ns":1783884947929403985,"hash":"54a1bf95512c0a8b5feeb518ea3af76983bb1b0a3ba645898b07debdb2cc52e9"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_customer.py":{"size":25235,"mtime_ns":1783886258025843303,"hash":"f30d5a50a28a1130325a9d9db88586bcae9e2a39434f077ded25f847af2ed66f"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_opportunity.py":{"size":23720,"mtime_ns":1783887271166904779,"hash":"f98964806f32c3020bdd7d644d930760d6ea3ad5162d5f1d6125494263dd5598"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_payment_invoice.py":{"size":13601,"mtime_ns":1783888353771580120,"hash":"c4af77164dac9ba4195c3d239c9679ea367b92f5f7500139f3b59547525af24e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_clue.py":{"size":18423,"mtime_ns":1783887050391179085,"hash":"72b84e497176bc63264c26d891c591c839f9dd9788988043c5752413c1b62a09"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_bx_data.py":{"size":32783,"mtime_ns":1783888844450695833,"hash":"16751fcd542e209535216a0516d78b62eecb81732d7fe0f9ec051fdf811e93b6"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_contract.py":{"size":36188,"mtime_ns":1783888258230435217,"hash":"a6269c8eeff19f4ae8ff7d22a3544ebc4a1858aaecd59583e6afd140a7fa766e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_crm_quote.py":{"size":27580,"mtime_ns":1783887475224438064,"hash":"4ac389eb6cb7437d4f5e8203d9908efec9836046ce8628a5e4be1f8b8ddd52cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_pl_personnel_cert_required.py":{"size":2829,"mtime_ns":1783946968430310316,"hash":"e89b3aa798794dc77085af5c4b880cdddcd2c0590c3cc3414f8a5389fd5f6d93"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260713_pl_personnel_cert_split.sql":{"size":3436,"mtime_ns":1783946793684378982,"hash":"ce61899ec7e13f41de08dbc923dd1ff2a1a976603d13c8f09aa6fd5be9c914a2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/ocr.py":{"size":1889,"mtime_ns":1784035957225824939,"hash":"1de70651a8c1c9e0e208bdccb45d0b9c7e7a0f8f9a663941bdbd5ae278234b1a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_ocr_service.py":{"size":11166,"mtime_ns":1784036700055450000,"hash":"6f233150e253813a7c9da30e6e5d6046fdea01baa67c2589a332fe511ab795f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/test_aliyun_driving_license_ocr.py":{"size":5130,"mtime_ns":1784032210609057675,"hash":"13d43c9144c3795b8870fbd900ed14f97ae22ee043e2c265a5151525666abebe"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260714_pl_ocr_usage_month.sql":{"size":1270,"mtime_ns":1784032423540552834,"hash":"d7018a4e5be9760846731440be98e53584d8e1461fc4ea54a0c8db61c666e7fe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/price_letter.py":{"size":3994,"mtime_ns":1784122554297827011,"hash":"6cd75fdbbd6a2dc65cf0b0b29e6206910fbd86f8bedf05bb56a8835130b81829"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/price_letter.py":{"size":13292,"mtime_ns":1784122560635390924,"hash":"1edbd17d41fcc4205faf15de5ce47aecc5459a39d06a920689379a65cdb9c3d9"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter.sql":{"size":11104,"mtime_ns":1784122573332360310,"hash":"548dab479fcde4bf1628ca2093fd7840720473a774a5289b55bfd4f46b902153"},"/Users/zlwu/work/00code/shanxia2.0/backend/venv.bak.broken/bin/Activate.ps1":{"size":8593,"mtime_ns":1780108930820914793,"hash":"ed2ea10761f2798e8980084d754284d3fcb94f1284ae7085c35c16108fe24846"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter_bill_price.sql":{"size":901,"mtime_ns":1784122547991214820,"hash":"11a4eb6f3b4d89c1a5141bd9a85e931517984b77ac213f5842dc590f928fe1cf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982000000000,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":665,"mtime_ns":1780804649000000000,"hash":"f720195209c1783d8b2526220a086c2ae2769d76a12bd7df74136f5432c7b75f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/admin.py":{"size":54082,"mtime_ns":1787220370865962181,"hash":"e465a447ffe7f9df496a20ccb8b7b04c600cf6599fbae6c7bce6e96df94c2af3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/__init__.py":{"size":827,"mtime_ns":1784980394000000000,"hash":"8bd7939017216a2b3c9ea7ed910167f7baf5c02cf724c10b392f6f286f6368a5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/advance.py":{"size":13404,"mtime_ns":1784992736000000000,"hash":"e09d555bad6b1a0ab289d045dda5a4231a54316e34616f60b03f724f9152e73c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/attachment.py":{"size":5758,"mtime_ns":1782790898000000000,"hash":"e88b9181e7c1a839074656ce2260cd6f693821402a24f08dd1c0ef3c160f8fa8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py":{"size":3362,"mtime_ns":1782650913000000000,"hash":"c6a142011870516822cf11cff16a86c56908f00680eb7c6219c8441c9b63632a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/payment.py":{"size":15715,"mtime_ns":1783745581000000000,"hash":"0d0b8823013a63f91baee0ea19b56f203e70fb1e450f873cfeb634a6cd017f54"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":20251,"mtime_ns":1787058336776549243,"hash":"018f973c0b7e749009921085028217f17d3e5acc21bcf0aece5df477991f7267"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/workflow.py":{"size":4984,"mtime_ns":1782650913000000000,"hash":"84285aab7499ce9280156c5814b2dc4fff42841803dd673cc6bfdc6eed498283"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":152113,"mtime_ns":1785808418671982120,"hash":"bc92066b2fdde0314bbc39160a8f70e812c38ac3d4985eb1bc575946716e0194"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":31798,"mtime_ns":1786239377894416082,"hash":"9140626feec0f19a8138f0004d290f9d7531682fdbe03c1aa08dfc183020c07b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm_contract_sub_routes.py":{"size":25165,"mtime_ns":1782650354000000000,"hash":"b2733fd74cb7e6cbe6518fc5a5700e387601afc087be09f395f3c61372099847"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm_quote_routes.py":{"size":27410,"mtime_ns":1786150042655485732,"hash":"31c6530c7713f95a1888ee2b5369a32a8de86040b83c68efc74c5a3faf75b7ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":544,"mtime_ns":1782011200000000000,"hash":"822060230e155b8704feb447b908c226d4c53e62b3e6df65c89dc3c7a0e6e07f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/dashboard.py":{"size":6576,"mtime_ns":1782651340000000000,"hash":"753703fbbe8ddc02d8fbdae78df4abd1448f5ce5878e2f0390111360fdc300b3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":16637,"mtime_ns":1785807172285029476,"hash":"e64e316ab276224ca0574ec9bc8730b67e8658459f6f0bfb4915ccad0958a177"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/plans.py":{"size":18251,"mtime_ns":1786955259140296590,"hash":"d8afadc3101075459f50f24b2a8dcf8210b31e93ca4486d6e60cbd48a891e1e6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/public_inventory.py":{"size":6968,"mtime_ns":1782790898000000000,"hash":"79aa205d2e5e89ed45dd7b95068b93e3f6db82ee9258b0331b21d6c8ab551582"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/weighing.py":{"size":15133,"mtime_ns":1785807184507708871,"hash":"69a9b973a3c30f447358a6d7fbb7aa52dbac7301c1f726e233063c51b0403a5d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/leave.py":{"size":6916,"mtime_ns":1782790854000000000,"hash":"6e03239433bbaecc54f72fa2aba2578573ae6c7fc881f287ef57dafed1a0f1b5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/menu.py":{"size":30932,"mtime_ns":1782790854000000000,"hash":"4e9de047e67ff365d17ac28d30e1baa72cfa3c651caa1b9776e225fc07da0e58"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/monitor.py":{"size":2789,"mtime_ns":1782790854000000000,"hash":"5c13164e49d7ecb6836cf8e65a705fccd518399b85d3be2318c9581a98bacd51"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/__init__.py":{"size":1401,"mtime_ns":1784428053000000000,"hash":"dea849a84ab13ec8daf7782c055f04682fb763bbfd2f184e37ace15312421905"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/base_data.py":{"size":33195,"mtime_ns":1786887371449952277,"hash":"945a79914744ae3a97c0c8c042a0d87480dd5e12f403fa3a8d760f48e77fe3d0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/freight.py":{"size":10543,"mtime_ns":1783760751000000000,"hash":"2d64ca83553dbfc928887171941761114c5db012b9c4a01d34e2b522902bac38"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/inventory.py":{"size":13443,"mtime_ns":1785202430756770222,"hash":"b14a59968214a71d272cc6fbfc2555a9ea39eb8174697a75bec673bdfda1b074"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/io_order.py":{"size":12552,"mtime_ns":1785484571840900864,"hash":"c1508e2c882a86f5dc3982e2262762704a0c6ec3f15cbbca688e51ccefa6a4c4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/menu_badges.py":{"size":1203,"mtime_ns":1783257582000000000,"hash":"05dfdc446281abd9c3b273ebae2f9cbc4efe681fdc0ab288a77903e9e2bf83c7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/ocr.py":{"size":1889,"mtime_ns":1784035957000000000,"hash":"1de70651a8c1c9e0e208bdccb45d0b9c7e7a0f8f9a663941bdbd5ae278234b1a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py":{"size":63920,"mtime_ns":1787198525663129264,"hash":"31abedce389accf504bc247ddb4aef7b2dee6b6c9b49a7415de7134d73b496b9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py":{"size":7534,"mtime_ns":1785969250566459071,"hash":"0d02ed1398fb72e2d78fa2c371eec74f8b4f6cd771d8b59fdff05091519276f3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_site.py":{"size":10018,"mtime_ns":1785969013811688695,"hash":"e117273ae089bd4668dbe169bc3bd995d8e72adda2bcb74324df974588759f6a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py":{"size":15410,"mtime_ns":1785969005314446819,"hash":"e7576554b07578dd6968018fa37ca764f6ac7ba2eb375197494a4630506d0dcf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":35423,"mtime_ns":1785967888456938238,"hash":"38786a7594853423e2258dab66ae1d034ab107e572808ec14fa5061b761c6849"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/transport_address.py":{"size":6737,"mtime_ns":1784993134000000000,"hash":"e7cc69318bb266a6fb28a9e8163b16e459b879e6041b226d9870477d3bf1c378"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/vehicle_maintenance.py":{"size":7793,"mtime_ns":1782695447000000000,"hash":"79033735d527926ac082200de0b89a122c53db3cbdf5fb33e3cc69f74dd017f5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/vehicle_recharge.py":{"size":8824,"mtime_ns":1782693867000000000,"hash":"f084b6fb3e80de0455ee9cfcc857ae5814b79497786367380f3a375b16c4bf85"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/vehicle_urea.py":{"size":6696,"mtime_ns":1782696220000000000,"hash":"750ecae5cdcc857031e618b87ffa9b28607bd47e72ecf6dc7ebbe51003682df3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/public.py":{"size":12667,"mtime_ns":1786197474707909148,"hash":"c8ec7432a0ea688d90e80af3bb4c1fc6bc69c462fc46e8fe4e629ee879565753"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/workflow.py":{"size":21202,"mtime_ns":1782790854000000000,"hash":"3950dd8d9855f5ed33a0e15883f7e442c4e26bc51672209b1e68ce0d0c9ce399"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930000000000,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930000000000,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930000000000,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":10876,"mtime_ns":1782790001000000000,"hash":"b39f128b6612589ea6ac5babd30752e9585b3af07b82bb1ad53c9e3c0d90816f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":11971,"mtime_ns":1782701669000000000,"hash":"0b84c32828939e6102bb3647691fa8f04b1f68e0e0e9f28127374cc44e19a11c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1122,"mtime_ns":1782219602000000000,"hash":"fb9fea8983524e3891357016b6546d982c4a82cb782fc01425f70472d4338b6b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":7457,"mtime_ns":1782790841000000000,"hash":"34bac56e1c2cb6215f4b5fa2dc32d77d4b4abca51428819eebf4afd269cc51cf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1473,"mtime_ns":1782650780000000000,"hash":"678d9ff99b5c89575ef47e5c9e61d495f364917fd6cfb2b322c4d5035d3ba359"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/config.py":{"size":7336,"mtime_ns":1786698748826032377,"hash":"f1c64d502228fac0c423b6e693ea4da31ddcee2bb1ad66f22bbb7509281ede0b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930000000000,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":8432,"mtime_ns":1784993108000000000,"hash":"16fd3ff8a3dde7397d55829d83c8541f6cbfb11145bfa8f2ae4e28fcaf4e2f60"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1510,"mtime_ns":1782790847000000000,"hash":"8bc9c8ae62e2be2c6920036582ba448dfcd1711c41cebb62274ff6bc6ee14b0b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/db_auth.py":{"size":2500,"mtime_ns":1782790853000000000,"hash":"4988b71d4e54b326c333872b34743914d67b15fb753c1b0231e9b00b366458a4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930000000000,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/delete_guard.py":{"size":3572,"mtime_ns":1782687610000000000,"hash":"223d91c51a1677b6a4b7802d5571af14d5cda8bc45e4e757b1f2150990a69bce"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930000000000,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930000000000,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930000000000,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/oper_log_context.py":{"size":868,"mtime_ns":1782699327000000000,"hash":"064c356f3f0fbabc454311445f02d375b965c2c055ddc51386d4dad50ac3337a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/oper_log_decorator.py":{"size":5312,"mtime_ns":1782701254000000000,"hash":"e476146985da29ad8cb77064d10314470546a8a52f6026a75fdbadd3fee34288"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/oper_log_infer.py":{"size":1767,"mtime_ns":1782699326000000000,"hash":"4346307abeb03020a7069f560556b9954cf50203efb6ac65b0a4b9644b6a9b2d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930000000000,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/redis_client.py":{"size":1691,"mtime_ns":1782790834000000000,"hash":"e5d84d7433ce745da7a37fb46dff5d5eb6ae027ef0efbf406da0c9c7fb6089ad"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930000000000,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930000000000,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930000000000,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":16487,"mtime_ns":1786075281717710498,"hash":"2392d8ccfea66b088160fb59163c663e6c7d5aab9ebdab4a515c785fdc31c520"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410000000000,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930000000000,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930000000000,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930000000000,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930000000000,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4562,"mtime_ns":1782699354000000000,"hash":"f233bde579c4f6c7f2fd6030878c5946fb5dd5e247efaf4fe80d3f48622c19a8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930000000000,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930000000000,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410000000000,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/clue.py":{"size":25820,"mtime_ns":1783155705000000000,"hash":"3526af7e7e79d505911690355890ccdb3a1c30d302534ffdc8626a454cc2499b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/clue_follow.py":{"size":8493,"mtime_ns":1782687674000000000,"hash":"54881f876d1842ee4a344d049ea4b5bac18b243535338077cb3eb3ec8b60e9c1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py":{"size":11229,"mtime_ns":1782649305000000000,"hash":"fbc3b4f3356256787839cc5b2a6f8dff41dcf9eb27c791e427e816e3ba14e094"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":10482,"mtime_ns":1782687664000000000,"hash":"f4e3a684dd7a6c7c927e10e8e1e0c108c151b963777b85c5b74d7e7871f3a438"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract.py":{"size":104081,"mtime_ns":1787132857357401187,"hash":"56e31876461af01cfca87646bfdda4a11e9d552158ff83912447ed6b9fa27d56"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_approval.py":{"size":15176,"mtime_ns":1786365604770395775,"hash":"8384859847239b6379ed2694bcf4b96b06c5e0ac666a4d368ed3da8c083cf540"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py":{"size":15057,"mtime_ns":1787130846141770880,"hash":"fbdb0a8ecbf5ab776ed42863ecbd66429442117a05f02c4afb835588e90b13a9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":27151,"mtime_ns":1786094657376202500,"hash":"143ae3ea59ca45377aef5a66141f074d257c6097c55a3d609316829b9c09f163"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":8121,"mtime_ns":1782687665000000000,"hash":"ec67fc7667847017a8d8b5a276f5c75328bda7fa360746d80c7890de3f6d4b76"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237000000000,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/data_scope_helpers.py":{"size":3358,"mtime_ns":1782650085000000000,"hash":"b0aab03bc7b3afb2faf39410e9881b65e6a2eeecba592d1655b5b9359fb4dbdd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":7446,"mtime_ns":1782687666000000000,"hash":"e0f2069c43cd272e5f061d30b47a42140ac37aa26379985fc781f8a3851aa44d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/opportunity.py":{"size":42231,"mtime_ns":1782687666000000000,"hash":"75f54438002e070076fe37ec2211c5fd67bf4aebd2607ac94db15e30d6f634d8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_follow.py":{"size":10069,"mtime_ns":1783821986000000000,"hash":"06c9f3deab3472b20429c12a618ae2d4d6efd3afa2353ac44cd52651a596af4c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_product.py":{"size":10346,"mtime_ns":1782687669000000000,"hash":"40b497a41ce4003e128dc305abedc54e01dbaad8a8f7bc1ecec1662a3953a1ed"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8816,"mtime_ns":1782687680000000000,"hash":"779f7f46e7ef8bfba27390d56fa071dfd3a8446d9d3b3361003b1c239f7169aa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/price_letter.py":{"size":13292,"mtime_ns":1784122560000000000,"hash":"1edbd17d41fcc4205faf15de5ce47aecc5459a39d06a920689379a65cdb9c3d9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":38290,"mtime_ns":1786094315681124376,"hash":"0ee3854167f55e5f23e090e2679ec8d882f79ef98d660e82b1f9f2381d3006be"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote.py":{"size":51800,"mtime_ns":1786365631647346096,"hash":"0c7f4464407d643f24e55244e1024a966fac9483b0a4b30f580ad4bdee558901"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_approval.py":{"size":10020,"mtime_ns":1786365604675762048,"hash":"1ad6152ab48fb4171b11066eb0f7b5cef0b7b204c0a47432d4b1c77a47213bcd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py":{"size":14114,"mtime_ns":1786184473623076262,"hash":"d38197b231dbafe35fb0e6c3dd38ab15bd88e58ab6d4904a2a00c73ef653c578"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_share_log.py":{"size":4277,"mtime_ns":1782650254000000000,"hash":"5bfbf7ce2918f9ecdbbca6fdce17d200cd52cdc71b2dfb44ac126a36ca0ed734"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5642,"mtime_ns":1782649310000000000,"hash":"f954dc5479f42a52fdb3f05ad9076fdbe43e569bae85299fca6c8f37c7323cde"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/supplier_info.py":{"size":7182,"mtime_ns":1784996460000000000,"hash":"2c244898e16084f533aa42a0a3b45106a99515ebf627d37557b22549fd1f0035"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6593,"mtime_ns":1784993073000000000,"hash":"a636f1c45bd0dd0b2e6c337061f3d1ce4119b130d444d6b31bf7f1be4782fa67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5379,"mtime_ns":1784993069000000000,"hash":"750a883eb752a96e26f22267171a941345201afa9d2ff243c4c4569d02a735ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5456,"mtime_ns":1784993071000000000,"hash":"d7f64d813e31ed3751b6399245ba502f953644569c75dce0a98598d38b0efde2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":961,"mtime_ns":1784993074000000000,"hash":"ba2c043bc078010880031293f6e2f0f01e9b820d191ff6989bf65983903f063c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4765,"mtime_ns":1782687678000000000,"hash":"847095009bddac2d77dcbb485bcc57cbe168ff874989c197f49f2a28675d2525"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7600,"mtime_ns":1782688282000000000,"hash":"36951a77088782d80500bfa6266b46a564a670e10b70af7a28cdee8c50741098"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/monitor/__init__.py":{"size":1,"mtime_ns":1780242127000000000,"hash":"0592c62ce1172d93aca98cbd9aaa54b9c2668022abf3581249516472db312293"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/monitor/oper_log.py":{"size":6673,"mtime_ns":1782699352000000000,"hash":"0586702734f693ee099af38d407c71cc0a840153f93174699c5a5201e0a9acbe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":2688,"mtime_ns":1785469127578334497,"hash":"88d704b7041a2ae458860c7a93357cff50bc5a8164939151326c22266f300487"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":5081,"mtime_ns":1784993075000000000,"hash":"12619e8ae3e341e757e8696459241924d761161a629b2804d0e1c3611b4d6a67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9417,"mtime_ns":1782688282000000000,"hash":"008550fe8efce5310afd3d41d944cee4b68d71763a587583f8832855480477f7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002000000000,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6442,"mtime_ns":1784993075000000000,"hash":"a5f9e5ab9008186c0001c480bd702e6217946eedc17b2e35eb25ad06edcfccca"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5659,"mtime_ns":1782688281000000000,"hash":"0192db8ac9c3de42fe8ee58324c77111e152bf4c35fd15c0b16467fe243712f0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":14214,"mtime_ns":1783851628000000000,"hash":"aeac623e3020fee4cdd01e463ced23e4e03539a17c5b57dcbd9d88aac5a4fb4f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":25052,"mtime_ns":1782688290000000000,"hash":"6ca7e3b79e91356a050592b768d7a6749e1bfdb2841a208c7235899603368aec"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/main.py":{"size":7025,"mtime_ns":1786698748399431982,"hash":"2cb034baf57da51c1d07fc7d0ef3687620e16988ea1eaa8ce52f63583b7119d5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":2550,"mtime_ns":1786203409890983484,"hash":"5ce371d64aba4f0dc087642c3764fcb5902bc4349cdb3cf41e3d03918f99c163"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930000000000,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":22271,"mtime_ns":1786953008558635704,"hash":"f5338821b8de425e1bab61f998feb6dd1009a9bee4894c8b024be4dd674c5927"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/crm_models.py":{"size":72710,"mtime_ns":1787130817794794854,"hash":"22c3da1ac23667fab64f4656bea101cd0d76c804a31ef37483f256af84a57923"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8110,"mtime_ns":1782219570000000000,"hash":"249bb0971c263436095a6324457557b6ac5cfc3ca5ac9bc9499a9b4cd21d42bf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/models.py":{"size":37139,"mtime_ns":1786161240583074304,"hash":"b1515a4ef5f689b18d8a76433aaa7f10741ce7f7c89f5a825b33f6eab14adac6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/pl_models.py":{"size":79159,"mtime_ns":1786203406711664433,"hash":"98346be3b4670bef2f70481990fe6f6ad57e59c2854feef8ac91cdc8ef67c8f2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973000000000,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930000000000,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930000000000,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py":{"size":81,"mtime_ns":1780750556000000000,"hash":"07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py":{"size":4603,"mtime_ns":1782688296000000000,"hash":"74b6e8bf6906518f80f16f218f1af74d2c356a6f392a4e8a69466f4179ce0b92"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py":{"size":525,"mtime_ns":1780750871000000000,"hash":"f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/common.py":{"size":1547,"mtime_ns":1782003187000000000,"hash":"a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py":{"size":1668,"mtime_ns":1782688293000000000,"hash":"ac07c7b05fe990e743dd5b4e96a85b59431479ca11b98cce7c340a93dbe99ce1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py":{"size":7714,"mtime_ns":1786953496310041338,"hash":"27892ee6a4d6a7ceda99609559224c7a0a9fde8913e0b339c01a561c8d390027"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py":{"size":1677,"mtime_ns":1782688293000000000,"hash":"f683e5bb7a45d0bae3b3f262c201453155eaaaf2c8d7f14f567a14295a68d2e1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930000000000,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410000000000,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/clue.py":{"size":9417,"mtime_ns":1780215022000000000,"hash":"2676afaecac4bb6da185674a9421dfbd40834ca21520adf66bb6b175fb728677"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840000000000,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":11009,"mtime_ns":1787130826227890833,"hash":"c9e4b8e52daa747e30abf889547945655f211a8b649cb299036093914bcc1a59"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":14744,"mtime_ns":1786094611074108908,"hash":"9c8829288e7508988352317a77a66c350ff44a06daf410c087dd695c0c05f5d4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410000000000,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198000000000,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386000000000,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127000000000,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212000000000,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/price_letter.py":{"size":3994,"mtime_ns":1784122554000000000,"hash":"6cd75fdbbd6a2dc65cf0b0b29e6206910fbd86f8bedf05bb56a8835130b81829"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":9954,"mtime_ns":1786094283314086579,"hash":"a4942bea509eac3ca533c903cc3a776cb3d1748ee7690366a93e526bfadcc324"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/quote.py":{"size":6227,"mtime_ns":1786171088067507315,"hash":"7b2ae18db1e5a57657f695899e15a65f52a20e92cfd40a967574f5b15dc36e72"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410000000000,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/supplier_info.py":{"size":4149,"mtime_ns":1784996454000000000,"hash":"25bc81362d6365c8bd852892890f3ff0c74fd702016cb21104c3bdfa51e2f858"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/__init__.py":{"size":84,"mtime_ns":1780804619000000000,"hash":"5193d61f7204f825551f083e79722805fb2abfd953bb552e80950bb3ff9784a1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/dashboard.py":{"size":514,"mtime_ns":1780804990000000000,"hash":"f2c1b1014d0d769abf32dab3783de65fe7fe327c956ffbfe44adce94542f8892"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/inventory.py":{"size":4095,"mtime_ns":1785807104128333050,"hash":"37a2e0218b67e33fc7ddc479bcb68c8c45ca892a2e88fbdc543f87b05924ae9d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/plans.py":{"size":5023,"mtime_ns":1785807102509773576,"hash":"6f0172acb27799becd86980fa299744a5c8ba404be1b473cc030a05a6f3ec7f6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/public_inventory.py":{"size":1492,"mtime_ns":1783211660000000000,"hash":"ed4e21307ac463410d296a2f8cf53f8e0429187344537bcf1e1212a7affa06a6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/db/weighing.py":{"size":5494,"mtime_ns":1785807118487481337,"hash":"120c573ad29a51805e5b04d0c2ceeaea08d70200a40ddca7fe36d5fc7d6585f1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930000000000,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930000000000,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/monitor/__init__.py":{"size":1,"mtime_ns":1780242127000000000,"hash":"bb5b318d3cb224c50a2e0286e145f89ea7278437437fd17d7c865d67ad148076"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/monitor/operlog.py":{"size":1069,"mtime_ns":1782699353000000000,"hash":"b9f0a382f8990f69391b26bb75b4538d141d6adadc4260fecaa8b33cb44c063d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py":{"size":5246,"mtime_ns":1787198187913760581,"hash":"e75254bdad34bd2888deb785991e5952bdf086b6658d05aca4a1809384b4538f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py":{"size":18605,"mtime_ns":1787200527820891774,"hash":"70838c89251a5b585b61317a1e97d3d2e18e0d97bd62e66ecc2cc70dd81b5d3c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/datetime_parse.py":{"size":929,"mtime_ns":1782905360000000000,"hash":"7a4eac85768cbeb0ba76f7f478ddadeeacab2498cd9be4070a76e1cfad693cdf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py":{"size":11299,"mtime_ns":1785439224271183303,"hash":"ba898caafbe6c8f4c5729c2521917eeaf92fa3c649626232d326eb255f0c177f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py":{"size":8319,"mtime_ns":1785202429973819450,"hash":"63ec5922aa1e9bdf8c3b7dfc5b0ccb555535cbf949e32a1055237ba86faaa146"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/io_order.py":{"size":6070,"mtime_ns":1785967869052400151,"hash":"0248465907a9647877900c348ee831efb6d8122739eea0862fcd89fa90db0831"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/menu_badge.py":{"size":247,"mtime_ns":1783257567000000000,"hash":"88c31e5ef8cee73327a1a0f36ea7ae0e61fa8f1ae140ad95ed0c0b9c2b4d05f7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py":{"size":27703,"mtime_ns":1787202650465385805,"hash":"ec7f8cf06b90fe24b8ac14cda476a71e7f2f2d3aa8fe057b6f2dc95ad136e939"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/resource_snapshot.py":{"size":3823,"mtime_ns":1782793446000000000,"hash":"2d65c990d058d22010f8d4449652eb752c297a046b5d7b3ff6755c3e1cad0cf3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py":{"size":21515,"mtime_ns":1785968996003560422,"hash":"d9c5e5068f0f3af4026d36217a7280c102d3570ef03bae1264b3079068870743"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/transport_address.py":{"size":2604,"mtime_ns":1782906539000000000,"hash":"6548b4b0c8c1d8096ce96ff1d5b523c67b12300f9a3eac66570b0256478a1120"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_maintenance.py":{"size":6563,"mtime_ns":1782695447000000000,"hash":"c34b79f5bcd004c0f6353922492883e4b08e5a6bc229f0265c9af850d235848b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_recharge.py":{"size":6299,"mtime_ns":1782694169000000000,"hash":"4d5ab880c0c3ca91b485e1ba53725005b9f89fe205780d58a738c861dbb7e6f8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/vehicle_urea.py":{"size":5609,"mtime_ns":1782696196000000000,"hash":"71b7de2f90b3c7c732b59683e5cd4d858288121414a1ff2679c039299f5fb024"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930000000000,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930000000000,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/__init__.py":{"size":34,"mtime_ns":1780750594000000000,"hash":"583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/advance.py":{"size":24037,"mtime_ns":1783746967000000000,"hash":"4834348d099b32b70d14e1b56279dbb385f42519646351d8cb220da8c5fe27f1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py":{"size":1296,"mtime_ns":1780758200000000000,"hash":"308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/attachment.py":{"size":4582,"mtime_ns":1782650868000000000,"hash":"3a6480cd051bd1af733a67e5babcd64f3f74cbe230d72364b599cde8b0c67a5f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/base.py":{"size":3984,"mtime_ns":1784993089000000000,"hash":"dd56d9197b4cddc60570bf5eb1851d4a426ab226858beb95bccb33a839471ea5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py":{"size":4639,"mtime_ns":1784993106000000000,"hash":"2640940d1851d60e7ba515d759a0aa06843b764742ae1ea2fabb95b6a16136f9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":50267,"mtime_ns":1786953507819708163,"hash":"6a3d918b2784fbcca72efd51b5c3b04a76b8598a0b26ce9708611a7a93ba4032"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/storage.py":{"size":3610,"mtime_ns":1785592530823872489,"hash":"9c5f871f6c22e837bfee2fc52af6a06588f6f509441485054ec2a138bc91211e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/workflow.py":{"size":5617,"mtime_ns":1784993093000000000,"hash":"514ea42e366fff44f1becbde6b5bfa219a224517e47dcdec25c8cf803a3ec0b5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx_data_scope.py":{"size":2394,"mtime_ns":1782650938000000000,"hash":"1e8e1dbdcf4bc68c2e30b99015e930bb9522bd1f633e95604ec6a62bdb2b43f3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/crm_quote_pdf.py":{"size":10650,"mtime_ns":1786172982774929079,"hash":"388f78a183375e8673316cfb94df5a00002049d2d639e59e31282c910f884a99"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/__init__.py":{"size":0,"mtime_ns":1780805614000000000,"hash":"2cb780fb722e6dbf2ecea6f6fc19345fb453e1a3c40694ba0ff7465eb7cf7d33"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/auto_generate_plans.py":{"size":4699,"mtime_ns":1780935400000000000,"hash":"d0760cb8155d60e18040bcf6fe41e6964640a3dffd6f4b7bb68678c9f31ab29a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/inventory_id.py":{"size":2574,"mtime_ns":1780934632000000000,"hash":"c5269cbb273d987c296143b83f1287762ce67d7ddeccfb0a72bc70234bad9f12"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/mappers.py":{"size":8976,"mtime_ns":1785807132026824584,"hash":"0501255ba896feb2ac32c24eff8f774aaa4663db1666e31c720087049219ddd8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/plan_helpers.py":{"size":386,"mtime_ns":1780805092000000000,"hash":"5c6ec7612b204e1dcb65c5daf03fa7f8ffa7710cd1ace63be4f7ca00cbf318b8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/product_helpers.py":{"size":2365,"mtime_ns":1785920719535751988,"hash":"6297e4e3ca2f90ae493d90b0b848bc3293e13d99b5246457565841cea18d4391"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db/weighing_logic.py":{"size":4110,"mtime_ns":1780804818000000000,"hash":"468ded88a0a4a397a96884580c88c59291c0b6effa897f08f1b3fea7857f9191"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/db_data_scope.py":{"size":796,"mtime_ns":1782651142000000000,"hash":"ad4e206ae53e25247ebb004e0ef586077a6e7df0eac7b14973c26b186cffb2eb"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_carrier_service.py":{"size":1735,"mtime_ns":1784957286000000000,"hash":"7ab4f5c5a28b0af2c8ddfc91bbc425a9fc5246956afdfd29ae4ca0af32d73cb6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_required_service.py":{"size":10455,"mtime_ns":1787200437818204201,"hash":"7069b3b5dd6f40ef62357735375b9f8ea26adeaf9c06ebc2a28bb9ddf62283e5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py":{"size":7694,"mtime_ns":1783849439000000000,"hash":"7bb0a6d4dfdb1ec11e72e971873791b8e188939e7c6b7328a0a2f4f8986c9d1c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_data_scope.py":{"size":801,"mtime_ns":1782650506000000000,"hash":"0f0275c56a43603e69a030dd1d284cfc7982a7636423cfff6d0e692eb4631cb1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py":{"size":15358,"mtime_ns":1785920723016038676,"hash":"b5a1121fdb3adc56e5733e54e9afd6618a18d3dd64acf59c7a78e65e16add189"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py":{"size":47808,"mtime_ns":1785967238102250242,"hash":"974882f2e0c31bd223d47f441985dcd9f69f6f1eb6b7312ad00107ae6c52ed9d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_link_read.py":{"size":782,"mtime_ns":1782225276000000000,"hash":"6471dfc9a1fbe66223f79490a5827b2422e5ca6932305ccde6aef4b641676a6b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_io_order_service.py":{"size":32017,"mtime_ns":1785967896127661595,"hash":"401565a9d71835101da1cad779269c38ad8b45309e9d969fc90cc233ec17fa90"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_menu_badge_service.py":{"size":6768,"mtime_ns":1787199006547960626,"hash":"30ae50d8a7a6c5148c732955a25b51dc5f9665fa3d3e710532f7047af89dd6fa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_ocr_service.py":{"size":11166,"mtime_ns":1784036700000000000,"hash":"6f233150e253813a7c9da30e6e5d6046fdea01baa67c2589a332fe511ab795f9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py":{"size":7484,"mtime_ns":1787140670593369229,"hash":"acdabe76ba0ba3ea348011e43b3955c6fcfb25e8e50729af8ccea0131d7fd766"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py":{"size":51310,"mtime_ns":1787195004716748073,"hash":"2056bce5f5e065729625fcd5a37d59a77087ebe309f8b4255ec981df1c1c7a49"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_site_link_read.py":{"size":2362,"mtime_ns":1782225460000000000,"hash":"3b9e1b93d3c4375b6b3adb4476ceb0df356654089d994aef4fea7e4f29266c06"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_transport_resource_snapshot_service.py":{"size":4861,"mtime_ns":1782793450000000000,"hash":"6f94dcb582fe725738a54469e461aa0124b9754b2141cb78d3859ff1a2f25ca9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_transport_site_service.py":{"size":3701,"mtime_ns":1782225248000000000,"hash":"07585f13aaad965c106e88ac26f5f8c58852c0c2bb0bdb91820185133d799219"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_vehicle_maintenance_service.py":{"size":23307,"mtime_ns":1783761151000000000,"hash":"0c7aa346d9879347d6a98c435fadc47873907ca0774147b69acf0d392e00e58b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_vehicle_recharge_service.py":{"size":22641,"mtime_ns":1783760938000000000,"hash":"a4a9377a8243e30dd7d6a8a175c68525009465fdebdeb01230849156dd8b59f4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_vehicle_urea_service.py":{"size":19556,"mtime_ns":1782696213000000000,"hash":"03d389e791e5fac9a5339d1259d342952fced97712c3657e8f791426de32743b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/web_auth_roles.py":{"size":5592,"mtime_ns":1783858473000000000,"hash":"04c2cd67a7ec8190aa7a9db717a722cd347a52279ac3ef5bd284777f0698a904"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/workflow_callback.py":{"size":3584,"mtime_ns":1780108930000000000,"hash":"a033c13c7bee7f4b636198c1efa47f2abba0d890657e52b0b7057568d4d83a52"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/workflow_engine.py":{"size":14042,"mtime_ns":1780113992000000000,"hash":"5c06a59c734f598d5c7ebe95d30f048ba3a97302b938bc9320d97e5a053c7aef"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":2486,"mtime_ns":1787140680379293292,"hash":"4285bf024ef91293fda64a484453f3ca095f3ce521d61159364a7075a22d8af6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350000000000,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/db_auto_plan.py":{"size":949,"mtime_ns":1780805095000000000,"hash":"9f7513cd2e74f9ddfe5cbee4ae58a40ee7a58aaaff051d590b19a6e1b08bb46a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/pl_cert_expiry.py":{"size":711,"mtime_ns":1783208067000000000,"hash":"7c02dbf83fad89c7da757965b545bf77f37792edd0d01d3ed320349b0b60a50b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/__init__.py":{"size":0,"mtime_ns":1780242127000000000,"hash":"a66deceefc987198863f61b8aa1b5715483a69c4a15ef47cd5586c5d8e429b97"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":5144,"mtime_ns":1786953427751879493,"hash":"4814f4efce4e883fc021712647f4b8ab9ebb8bd467fa17d4d1f37787b753f074"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":2363,"mtime_ns":1783745556000000000,"hash":"e8b487a9bb4072356cae7b1b38496c441f9a1534d6807798448e6de97073d669"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py":{"size":9594,"mtime_ns":1780743830000000000,"hash":"b20594507aab09cebc3d540acad04547bf780cac9c885187138f5d64718ed513"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/excel_export.py":{"size":4411,"mtime_ns":1780242127000000000,"hash":"7fbde3fca845e4705487e7f801caee308bcc0c99a9da7d0c99681a96eaaf6076"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/ws/__init__.py":{"size":26,"mtime_ns":1780108930000000000,"hash":"d4357444e9b5b0a8593000fb6e4dc37469ebe008e675bf42ec0d55d463f88fc6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/apply_pl_data_scope.py":{"size":10945,"mtime_ns":1782650517000000000,"hash":"928fe2112c9fd8bab4da7f4fc67d6d247c78187ca3b1a4146cc2fd3d9e04697f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py":{"size":2918,"mtime_ns":1781880510000000000,"hash":"b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/compare_dict_snapshots.py":{"size":11072,"mtime_ns":1783860128000000000,"hash":"cfc98cc72c5e387317cfa0a7670c47067fffe8f2e540d5cd580ee459e173e4ef"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410000000000,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_bx_data.py":{"size":32783,"mtime_ns":1785455807105877935,"hash":"16751fcd542e209535216a0516d78b62eecb81732d7fe0f9ec051fdf811e93b6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_bx_menu_names.sql":{"size":454,"mtime_ns":1783254856000000000,"hash":"d40ab4c556ab285498f4689c21736832deddc754a9a2b7d806e870ccb39fc9ae"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_clue.py":{"size":18423,"mtime_ns":1785455807106788561,"hash":"72b84e497176bc63264c26d891c591c839f9dd9788988043c5752413c1b62a09"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_contract.py":{"size":36352,"mtime_ns":1785469153230627041,"hash":"b78319ae19a0089684e1ffe1993a1b62be2d687ab65a3e69da423247e0d4d4d0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_customer.py":{"size":25235,"mtime_ns":1785455807108557895,"hash":"f30d5a50a28a1130325a9d9db88586bcae9e2a39434f077ded25f847af2ed66f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_opportunity.py":{"size":23720,"mtime_ns":1785455807109188438,"hash":"f98964806f32c3020bdd7d644d930760d6ea3ad5162d5f1d6125494263dd5598"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_payment_invoice.py":{"size":13601,"mtime_ns":1785455807109946855,"hash":"c4af77164dac9ba4195c3d239c9679ea367b92f5f7500139f3b59547525af24e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_product.py":{"size":14973,"mtime_ns":1785457303643810528,"hash":"83b693cbc1a590f7a3cd6af2387e638f28474c230fc6f4c0a2813f343d35d887"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_product_category.py":{"size":16785,"mtime_ns":1785462269008382807,"hash":"35d9a064be6f0ac00b6b2162d77d710a2c4f108824eb78425de2341d576cf7fa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_quote.py":{"size":27580,"mtime_ns":1785455807110995231,"hash":"4ac389eb6cb7437d4f5e8203d9908efec9836046ce8628a5e4be1f8b8ddd52cd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_crm_sys_oss.py":{"size":23401,"mtime_ns":1785468795797340265,"hash":"f2d9da1743e3997bf7361d39ff66eab588d7dd55d2114dc9cf6796f4f697a9c3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_dibang_data.py":{"size":20215,"mtime_ns":1785455807112164732,"hash":"28a49a423a784e70bec424b702f3d58f69b6f847153c061414efdcdabb660d0e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_doc_reminder_menu_group.sql":{"size":1562,"mtime_ns":1783256051000000000,"hash":"82a0ce8c5293f5051967633c1c2e0a1dc60e1fc7c97919c9e0866246bbcbe3d1"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_menu_groups.sql":{"size":6367,"mtime_ns":1783256049000000000,"hash":"5f6964d1ea2712d3d72c8f43f08c16597d85fe79f3f54c8be99962090d6c2b67"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_delivery_slip_template.sql":{"size":217,"mtime_ns":1783231586000000000,"hash":"e05e3fe7255e6c8a88aceb1aa53d743a4888a34c9fbaa4449c1cb8a275744d68"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_product_legal_use_cert_url.sql":{"size":1180,"mtime_ns":1783253793000000000,"hash":"01105ec581050477087d9bf65528cfe77ce0026d0fb682cba8014c4cdb046db7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_slip_template.sql":{"size":191,"mtime_ns":1783219958000000000,"hash":"e2a17c3df7be5cc0436ef979a48de81eecbe99c03f43662f4b0954a09dfa1305"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no.sql":{"size":203,"mtime_ns":1783240340000000000,"hash":"de9b3c8e1617b9c345b2d4005e4a627f10ded089db89d35f0b389b333b840c08"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_no_format.sql":{"size":571,"mtime_ns":1783241697000000000,"hash":"61fc58ebda64c5d6be6bfd374dda99c7134e38dc89031527f71916625c4e36db"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_pl_plan_subpack_slip_template.sql":{"size":215,"mtime_ns":1783238744000000000,"hash":"24cf12e21f9f61f49c38e654c0ca655f56a21e5e2364e4c2ca4547dad583272e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_users.py":{"size":28602,"mtime_ns":1785455807113727900,"hash":"f5626fd3ca8bbc16275862080365c3ea2a27fd0f608e2243a284493762a8f735"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration/minio_url.py":{"size":4770,"mtime_ns":1785465354405875664,"hash":"54a1bf95512c0a8b5feeb518ea3af76983bb1b0a3ba645898b07debdb2cc52e9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260711_hide_vehicle_urea_menus.sql":{"size":269,"mtime_ns":1783760394000000000,"hash":"a5f66647cdb4f0f403689b47b804f8099d7d710753823ef3ddc5e7a5a9ca4ca8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_add_finance_dept.sql":{"size":1697,"mtime_ns":1783855927000000000,"hash":"4ce457089ead5c063ae8e1a6d6553416deb43c54a7edddb574ee2572390aba99"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_affiliation.sql":{"size":753,"mtime_ns":1783845019000000000,"hash":"6d450d264921f43c4e74ee4a2bcfc8335d16f77d9e0413267389741a92bf4eb5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_pl_personnel_type.sql":{"size":1662,"mtime_ns":1783843576000000000,"hash":"24fcd156f97e2bdf2bd158beb5358fe7159874783a84716c6c18d2565cc8ac1a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260712_reset_sys_dept.sql":{"size":4517,"mtime_ns":1783855538000000000,"hash":"3795d6127a4dcf55d406be0fe673b8a83655723fe1f07b855e6fe45823d489fa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260713_pl_personnel_cert_split.sql":{"size":3436,"mtime_ns":1783946793000000000,"hash":"ce61899ec7e13f41de08dbc923dd1ff2a1a976603d13c8f09aa6fd5be9c914a2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260714_pl_ocr_usage_month.sql":{"size":1270,"mtime_ns":1784032423000000000,"hash":"d7018a4e5be9760846731440be98e53584d8e1461fc4ea54a0c8db61c666e7fe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter.sql":{"size":11104,"mtime_ns":1784122573000000000,"hash":"548dab479fcde4bf1628ca2093fd7840720473a774a5289b55bfd4f46b902153"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260715_crm_price_letter_bill_price.sql":{"size":901,"mtime_ns":1784122547000000000,"hash":"11a4eb6f3b4d89c1a5141bd9a85e931517984b77ac213f5842dc590f928fe1cf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260719_pl_inbound_outbound_order.sql":{"size":10843,"mtime_ns":1784427911426172052,"hash":"baab6333d8e0865e72a9c474eb642bd5b166f9d70a6db5825d315574f66df069"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/patch_pr3_api.py":{"size":14409,"mtime_ns":1782650231000000000,"hash":"fb4cf4178a4b7c5530999f0c950ed38310dfe81b3168c10117849d6f512be01d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/patch_pr3_api_calls.py":{"size":3345,"mtime_ns":1782650279000000000,"hash":"57732d0beb80ee17b533c78ce0250967fa83c68354ea9d1972275ba1fbc39007"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/patch_pr3_quote_contract.py":{"size":12491,"mtime_ns":1782650163000000000,"hash":"eb6b944df35fda5edb6675b69b00f5a83a75fd78785251d1e81e1788ed439cfe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/refresh_business_role_menus.py":{"size":3812,"mtime_ns":1783858483000000000,"hash":"b2c76109936791e1f624e239b24832237fa0256b38b98578e39825ac215fb166"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/renumber_crm_product_no.py":{"size":9071,"mtime_ns":1785455807114125233,"hash":"320c63801100ea8e9fb62abfb44b3487139377e293310593a877ab2d06e9d2e3"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/run_db_auto_generate_plans.py":{"size":1043,"mtime_ns":1780805102000000000,"hash":"3cd8f15b677f21b2873ff384fc0581da264a53ee4318da3c8262101156e3225b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/seed_sys_menu.sql":{"size":82807,"mtime_ns":1784948075068625581,"hash":"b712bc6d4b5a248a26706137f601e26d81bdb7ffdae016ff818a77155afe15a8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/setup_business_roles.py":{"size":14256,"mtime_ns":1783858477000000000,"hash":"ac12df2cf75826931c85f4deb3ae28614e31ea825d0beb3cf351a8d4f5cb1071"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/test_aliyun_driving_license_ocr.py":{"size":5130,"mtime_ns":1784032210000000000,"hash":"13d43c9144c3795b8870fbd900ed14f97ae22ee043e2c265a5151525666abebe"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/verify_web_menu_codes.py":{"size":2535,"mtime_ns":1783858485000000000,"hash":"16c9c072b5b80fb309d56823963ebd0dd1f437a3f74d7f82711dd8a7c2de86d2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/start-prod.sh":{"size":7357,"mtime_ns":1782639355000000000,"hash":"ca89869446be74a2bf2367b3b28f448580220859a39a84ad9613ac5fe35a8433"},"/Users/wuzilong/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661000000000,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_data_scope.py":{"size":4660,"mtime_ns":1782649048000000000,"hash":"9545dc65fac7e13bf07ece2ec828ec5957bb115e23d0ac8c996f9c70362a4ecd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_db_inventory_id.py":{"size":586,"mtime_ns":1780934647000000000,"hash":"71a9617d5d0f2c23416686eded204b4c941b47afc3fd6e3facf0c75401e883d9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_delete_guard.py":{"size":1565,"mtime_ns":1782687611000000000,"hash":"5e2a45f63b7296e3a10dfbd4b4716e54370e1439248881d6591cba5c9f6581d6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_dibang_plan_quantity.py":{"size":4258,"mtime_ns":1783777759000000000,"hash":"6af8eb3c1f6c7ad34cd62f1e82e9c6b96737ffd48ba74dda7c5f888c55dd11cd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_personnel_cert_required.py":{"size":3367,"mtime_ns":1785643508814042558,"hash":"4bc3552f4897e80dfc8bc28ea2566bd0ea6839e860d781653088066f57f414e6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/venv.bak.broken/bin/Activate.ps1":{"size":8593,"mtime_ns":1780108930000000000,"hash":"ed2ea10761f2798e8980084d754284d3fcb94f1284ae7085c35c16108fe24846"},"/Users/wuzilong/work/00code/shanxia2.0/backend/DEPLOY.md":{"size":2574,"mtime_ns":1782639356000000000,"hash":"6989c30ab5c99ebf488137e31e5561b4a00d36060716dfad3fc247b673538818"},"/Users/wuzilong/work/00code/shanxia2.0/backend/README.md":{"size":2752,"mtime_ns":1780114581000000000,"hash":"f5def8d25af0556a443c31a73e81f958883b60cfed8b31fac457f2832c2b6d58"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_io_order_enrichment.py":{"size":2319,"mtime_ns":1785967899536094864,"hash":"f46d9a34d0693693f48c0bea5e72d79baa7adecba9c413d5583e1f229e692043"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_io_order_site_feedback_status.py":{"size":3527,"mtime_ns":1785446258255101137,"hash":"fc53fd735e09b39e7cfe085ca6756f87396b6954f7057fde2bfca39524c34276"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_tripartite_cert_gates.py":{"size":2003,"mtime_ns":1784947499000000000,"hash":"312091d1017c2f22195a9317cd6f39c880cd5aa6b27acaf343181319f045ffee"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_carrier_eligible.py":{"size":689,"mtime_ns":1784947707000000000,"hash":"a3093ae31166d40d7836abb3575c0d4d50ff9e9bf23fee8e7a291afdec39fedd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/pl/paste_recognize.py":{"size":1879,"mtime_ns":1787201019820027930,"hash":"762caa6d084015d368538e687633b064bbefd73b7c91b225249d9a949b361fca"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_paste_recognize_service.py":{"size":9977,"mtime_ns":1787201020688178054,"hash":"53f4d3c74ab4ebf0903b62c538e128c10763a474b3a78dce51fae6f7e13587ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migration_20260725_pl_tripartite_menus.sql":{"size":2113,"mtime_ns":1784948072087970834,"hash":"c4897f7cff3c22535726f105d1f2e543eb551f6543e8b256ced85ae2a38ee683"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/bx/invoice.py":{"size":5868,"mtime_ns":1784991682000000000,"hash":"65eced0eea3c4f9567842be545d2eb042c24398d5ff5eeda2aff693fcff06ff2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/bx/invoice.py":{"size":1896,"mtime_ns":1784982228000000000,"hash":"909460b2883e85110e15a56d5755748e1bcb3e26dffac89684440813788e8668"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/invoice.py":{"size":15808,"mtime_ns":1786272473404426378,"hash":"eec75b8a2f81e6fe8f5c6af25625d6d3b0d1cd6ec01151412e2707a4e338e623"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/invoice_ledger.py":{"size":10448,"mtime_ns":1786539462776370778,"hash":"7247589419d1b5c86087def9b33d0e20d8d04b75b4afe7b7481dd96c385d20d8"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/crm_supplier_hazard.py":{"size":3425,"mtime_ns":1784998230000000000,"hash":"2365e02c6f2584dd6d18e1ad3c8d3075096777b244cc1430ef913254c61a9442"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_bx_invoice_ledger.py":{"size":1898,"mtime_ns":1786539462170910559,"hash":"ef8ee465df020aaff376deca3b251e13e017dc72856efc07c982b1469e4888a9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_supplier_hazard.py":{"size":855,"mtime_ns":1784996182000000000,"hash":"ce8bd619b1a6dc746541a57eccc095d19ccde3bdb88341995631e15fcfb14bca"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_pl_plan_create_date.sql":{"size":536,"mtime_ns":1785140686875543544,"hash":"0694b0b031a6461d8a8940f7403739a8d20fd018403a02a8f1e0e8bf2bc1490f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_create_date.py":{"size":299,"mtime_ns":1785140895170402200,"hash":"7a05f3fcc2d9a36f08b0801f6fbf6ee4fe58982d9212d7a10a70b8b4d41b6f85"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_crm_product_brand_alias.sql":{"size":4594,"mtime_ns":1785160650030737687,"hash":"f9f6ea6ca8e31cf5622a31f8303fe81174769b7d094645a88dccfcd6484b9cc4"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py":{"size":3334,"mtime_ns":1785453570763074999,"hash":"feca7ad16664603f04ee7fa38f03187ecfb70978cc41fcdb47d3fbfb54a11fbc"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_inventory_service.py":{"size":7058,"mtime_ns":1785453321817830521,"hash":"a13cd5ea34dabe91b4663551824c3da9fd2a64ac3fcbc46b2b099644f308b457"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260727_split_brand_from_product_name.py":{"size":5120,"mtime_ns":1785202591782265408,"hash":"d9d9b949cc5f275764b7ea771616141084a0c7cd256dd3262bf532cf4ac0f20f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_brand_archive.py":{"size":2440,"mtime_ns":1785453323711185768,"hash":"2a704d8278c46f510fa020cd9aed4ea26fd978262d7fe728287bcfe5726798e9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260731_pl_plan_plan_date_nullable.sql":{"size":223,"mtime_ns":1785439209757662121,"hash":"50a633398cc1c8288c8b5fa221885272ca963c4b777b70102c96632f2d51047a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_feedback_brand_qty.py":{"size":9813,"mtime_ns":1785452749855419713,"hash":"c67d06fc7ac5cc9b3be0c2005f30a4914ca97c27cd5a7c80e7814382cb05c82d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260731_pl_feedback_brand_qty.sql":{"size":4927,"mtime_ns":1785445506581710120,"hash":"618b647158c133824ead60382d2b6e73713ea32a7b2224efedea431e071cc89a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_feedback_brand_qty.py":{"size":3424,"mtime_ns":1785452788497663858,"hash":"1fe2a5c0b1968f864ef22a436b0e13a697977ef09a71c6e8bfda46da25825f90"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_product_display.py":{"size":3590,"mtime_ns":1785451173102957680,"hash":"728e1d79035875ac350201c943241493f04006a2e1f71d7e3e41571eeac721e5"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/backfill_crm_customer_license_urls.py":{"size":7789,"mtime_ns":1785467213374029636,"hash":"a0faaa83477187d8b4a9299d1b170f5ea2c5ca3b450fb4437bf1dc30ab1b5b1b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/backfill_crm_contract_attachment_urls.py":{"size":9795,"mtime_ns":1785469147228035015,"hash":"6331fa977cbb794c3ee9cb072692c63b05f23f071ab8df1d0b8368455af3b82c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260731_bx_reimburse_invoice_attachment_id.sql":{"size":784,"mtime_ns":1785473095766881076,"hash":"702c6845b0b936d4a5a06918fcebefd71b38ca4b2dcd7e51ee45af19c77407b6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/quote_approver_setting.py":{"size":3632,"mtime_ns":1785560604338687232,"hash":"7442687a3dde4a0a354064c3fef7503d37c9ce3f1991873e64befd2d1812ba4a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_quote_approver_setting.py":{"size":1015,"mtime_ns":1785560055190832342,"hash":"2a7e91833de33ed92ac8e9157746f15fd7a9e7c5f25bf043dfb0dd7c77859715"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/quote_approver_setting.py":{"size":291,"mtime_ns":1785560601528774704,"hash":"e978cab24ee46f23b7432bb6f411e760f2d8d782a924efe811608c2200fcba0a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260801_crm_quote_approver_setting.sql":{"size":2117,"mtime_ns":1785560449173091996,"hash":"66c92fbf3031539484e241934c14fee379a70b1b179a8b8345c5ae70c8498f14"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/contract_approver_setting.py":{"size":2875,"mtime_ns":1785561463337293690,"hash":"7c3aeed13e66f67159220b323298b414a9d1b1f9ca6b679dca31532be86a132e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/crm/contract_approver_setting.py":{"size":294,"mtime_ns":1785561469090499071,"hash":"fca8a7cb3a75c82e9c3395f2471e20dfcdc469a8fd299c9c6ce5e79576a6c3fb"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260801_crm_contract_approver_setting.sql":{"size":1903,"mtime_ns":1785561454940491268,"hash":"f81470b97da71283b9d3defc81fd177cc2fea1dbd487febaebf7a8f24a73c71f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260802_pl_vehicle_personnel_photo_urls.sql":{"size":468,"mtime_ns":1785637173564154921,"hash":"852680d19f6b71def29908a718ae92d9169a025e9d78808b9f8d000bdc61fb52"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_vehicle_personnel_photo_schema.py":{"size":1231,"mtime_ns":1785637623899998875,"hash":"e4c64e35446196f1de7ba0e719be054d019ec8b075f5ea8c128b8a60c59695aa"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_contract_no_align.py":{"size":3126,"mtime_ns":1785825791491415499,"hash":"ff831959d54053ab544d9c377133a120cd4caa8aac6650da16a36150444d78e6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/db/public_vehicles.py":{"size":2231,"mtime_ns":1785768179156681871,"hash":"7a98a605c181669b08d642c45a0dd6fa523939af5125b5ad0bae0de2ee95b2f0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_public_db_vehicle_plates.py":{"size":323,"mtime_ns":1785768224738481967,"hash":"616ff1488b2b17e419c4e4ec368aa2764afea116722010cad785218a4e12259a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_contract_name_from_parties.py":{"size":6224,"mtime_ns":1785828057088217919,"hash":"9a59bc109ddc024a07b33b7392a05d483860e2214950a5e3552dee57e207be2f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_resolve_driver.py":{"size":1013,"mtime_ns":1785919856405819727,"hash":"d88b4043fc8e89abcf86c7939f9c0072b79a598a2c9d0429863bbaefad603fed"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_transport_arrange_optional_driver.py":{"size":1644,"mtime_ns":1785920340176946279,"hash":"04877379c17cc22060c20331e036b8fd38356f19472ff3f44a5bcbc24c599d03"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_db_resolve_crm_product.py":{"size":1264,"mtime_ns":1785920708079005468,"hash":"f882adf7b1fbc4eb6a597a32d7854c8e70fdb647e36575077fca62ebcd5d27fd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_contract_reedit_to_draft.py":{"size":762,"mtime_ns":1785923790041814966,"hash":"7148ba8438800787cfdf57ae6f9a036c937365b7fb3488446a9ee8f0eec627cb"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_product_options_keyword.py":{"size":806,"mtime_ns":1786094317931053244,"hash":"9af3eec71149b686820da37b4b1648c303572d9915a1852f29d6d009c824223c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_freight_unsettled_q_filter.py":{"size":670,"mtime_ns":1785967257899846757,"hash":"70f5f3ba569ad9bda0cf82b2c1715098f7e4456a94ec3ac4c8166f68707ca64d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260806_pl_plan_pickup_delivery_contact.sql":{"size":355,"mtime_ns":1785967900218676221,"hash":"91ff55c654521b8604a30a8cd71c1219fcaae1e8e851684121a5c17937d447af"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_public_link_archived.py":{"size":3479,"mtime_ns":1785969243308729198,"hash":"f45e090c9f94693e70c4316e4201524d108696b394dad3f32d141119e467a36d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_cert_list_filters.py":{"size":1103,"mtime_ns":1785970837922953790,"hash":"702a2b5e78b7bc830c43349093dec22e441557293ff3ea42144a87080dab6329"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260806_pl_plan_product_cert_urls_multi.sql":{"size":506,"mtime_ns":1786026516384661236,"hash":"888d02bc77f0d9d037b55a45a54654dcefa5a4d8753e81af10c1b064df67a4ec"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/pinyin_abbr.py":{"size":1728,"mtime_ns":1786092671463202484,"hash":"6249344ef1bba8eb8ffe88b78a5415cded10cc964936c9a21d6664cd07dc2574"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/backfill_name_pinyin_abbr.py":{"size":3672,"mtime_ns":1786094939020069795,"hash":"95641ff2c1f983d666f9b542abd95e67678ce0f3a0c060b9b2894d124f72b48e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_name_pinyin_search.py":{"size":1997,"mtime_ns":1786094657392019008,"hash":"0b6a447b8b8288199ac9281eeb381219dc772015dae2d5dbe9bfdc7549f3bcd2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pinyin_abbr.py":{"size":1914,"mtime_ns":1786093018755774342,"hash":"9e1e22aacecbc371c65cf98b765f1801142a42ce86f00b595f731730de01462b"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/menu_favorite.py":{"size":5893,"mtime_ns":1786164467195259167,"hash":"47abb770c311107aa9175afa9e763f725ae632aa142701dd0920b1045bc0201e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/menu_favorite.py":{"size":448,"mtime_ns":1786164463958357878,"hash":"1e59cabf9fb61d54069a3e2f6989a35caf7e3f7923c147b3c8e311f9e414e98f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_menu_favorite_crud.py":{"size":333,"mtime_ns":1786161663839656046,"hash":"90f5142c48c2ac1f45779795f1bf98d4586e8021a51661d67749a1a997ee6317"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_crm_contract_freight.sql":{"size":485,"mtime_ns":1786168838831711328,"hash":"03a5817604775db7b6fac63b4c2525b29209157c95d3b62d0832e10b3ade5dad"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_crm_barrel_deposit.sql":{"size":640,"mtime_ns":1786171064998893402,"hash":"635246d391b3c51cc942b0bd0626bec0d8a1e01b040982eaf4d8247cfcced69d"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_internal_customer.py":{"size":359,"mtime_ns":1786203402295831206,"hash":"b0943b9c2c5798ca37a7070f830dfd25e3136c6cc44b68445d387838ed0a8d93"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_pl_plan_contract.sql":{"size":1307,"mtime_ns":1786203401315396321,"hash":"70fc937d300892df9e01020e7efce19320d671a3d68d8ef2a90ff511c31eaada"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260808_pl_plan_legacy_party_contracts.py":{"size":6021,"mtime_ns":1786252409838644271,"hash":"d1c4e2da790cccb70a334e9c31e35d7468d02ebcd3a7ee94be148ca793f2bdb2"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_approval_reedit.py":{"size":7025,"mtime_ns":1786365642443908289,"hash":"b8b8b8fdc2eb6227d0bef5e8904a48952b75097add1f8016db21789157fa3d05"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/duty.py":{"size":4740,"mtime_ns":1787231626459811774,"hash":"c682c26e2c612028f217b471f7cdda6319e3e15120d8d36fe34420d3a330c341"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/public_duty.py":{"size":1302,"mtime_ns":1786782175107488581,"hash":"202fd6efb33db564f8bacad0a2b81f4332f4a458a63503cf0d7d0c4e4b9c0ce7"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/models/duty_models.py":{"size":4746,"mtime_ns":1787231117332865605,"hash":"5bd07ff51cc6d0458d06c3e80615ed09ee2e8856f26208e761f96ab5954618e9"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/schemas/duty.py":{"size":1607,"mtime_ns":1787230514997795216,"hash":"94e54a61c8e7ec54e476d64ed55275dc3c75ca146d5b8d69ee39fc2ceebbf6ee"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/duty_schedule.py":{"size":27835,"mtime_ns":1787231615180206570,"hash":"e28c2014ee953324fd6e785a289b4758b9c318ebdd68db91273ebdc71ce33086"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260814_duty_schedule.sql":{"size":5119,"mtime_ns":1786780828212847883,"hash":"6dd48ca0af157368eaf593b4fab9572717fe181b268df01910d33ef429fe5a30"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_duty_schedule.py":{"size":20820,"mtime_ns":1787231654487450531,"hash":"118c6c68d1051c471312a12a484601d08532a296f2a801a7fd80d157616e185a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260815_duty_menu_portal_fix.sql":{"size":2448,"mtime_ns":1786862443519086520,"hash":"e8b344901dbe1a098895f53eb58b6b774d4d9dc98c4314af19e3d723c630d46a"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/crm_settlement_clause.py":{"size":1100,"mtime_ns":1786936843880889885,"hash":"39bdd102736139f915fbde5bf0492b1ab5bea171e50886fbebdc91d11ecc26f0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260816_crm_settlement_method_options.sql":{"size":1283,"mtime_ns":1786863543577427878,"hash":"1a77cf2cbbd8c7bd36ace3c5746333533dfc67d9538b5e503d20fce0adae3839"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_crm_settlement_clause.py":{"size":1171,"mtime_ns":1786936844055122834,"hash":"1d5399fb65ab99a9192d53cf6669591a805fb7acac0b783cec2de73b8f263c41"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260817_bx_reimburse_detail_occur_date.sql":{"size":248,"mtime_ns":1786952998755687610,"hash":"47f947e6b9c44f9cd43eab4933391a0a066c8afe47c7f150dea100d0fa527556"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_bx_optional_date.py":{"size":676,"mtime_ns":1786953396821732245,"hash":"ad6002f2e2381ce3492f0655a9e9d25c12e79eab39b25cad11eac1ce6681d32c"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260817_duty_staff_role.sql":{"size":669,"mtime_ns":1786961977381233883,"hash":"18ef78c4e3f3098f98391595d410d9d3208b27e911a51b2dd069a087c21552b6"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/bx/reimburse_import.py":{"size":22009,"mtime_ns":1787059477540105703,"hash":"3d8335fb43d7521ab956b91b4f0db97865d1eac9567e6b16fc6f64514554dd7e"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/excel_list_validation.py":{"size":1727,"mtime_ns":1787058157688083229,"hash":"c5ee81774768064f85a0a1c10fe26560c5cd8688dc9a350db20183e8e6317c08"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_bx_reimburse_import.py":{"size":6968,"mtime_ns":1787059491763657804,"hash":"c1dcf74bdb897989de6275dc50c8f2c4d215d0c255667ad0aa13327491917511"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/core/id_card.py":{"size":1013,"mtime_ns":1787140660375276708,"hash":"2a22466e4135cbb3a407c4024083962e356c0173d6bcc98ef37c1826ac2b0e01"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/tasks/pl_personnel_age.py":{"size":788,"mtime_ns":1787140671776513916,"hash":"b143ed12c8ead08503cc1301305c805dc0bd3a15e6657486b497996e546884ea"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_id_card_age.py":{"size":722,"mtime_ns":1787140680915434955,"hash":"82a6853f305295d6b577bc170e57b9ea0eb878a6a049e905754f361e040a7a5f"},"/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py":{"size":9673,"mtime_ns":1787202689374864099,"hash":"a1f1c96584af9c8533b4330c8732d318f6644dd37b63cf01766815524c789748"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py":{"size":2024,"mtime_ns":1787198187913738457,"hash":"7f93087d723da02d189f822810735774d7cb82ad518231edd10acb7586012bbf"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260820_pl_plan_contract_complete_menu.sql":{"size":2968,"mtime_ns":1787199071218605982,"hash":"0e073e68af569a2fa6eb0466e2ae92e1f76ea446ad9047137b32ce6a25baacb0"},"/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_trailer_cert_rules.py":{"size":1667,"mtime_ns":1787200408112863658,"hash":"b11b4a7dc26bc9988e9fbb53caab9725eeb4ffdd807a183086f8a724184625dd"},"/Users/wuzilong/work/00code/shanxia2.0/backend/scripts/migrate_20260820_duty_shift_dict_time.sql":{"size":5448,"mtime_ns":1787230059421313571,"hash":"58d824821f7152e7becdf602d65007db1245508560f66be35df785c8547c8598"}} \ No newline at end of file diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 108a58319..3aaa3aaa2 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -63,12 +63,12 @@
-