From 16986f443e9f96cac892801c9ba655570c4daf52 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 27 Aug 2026 19:38:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/services/pl_plan_archive_export.py | 313 +++++++ ...4e4bc556ae94559e9e9625f5a5e567c65ef1f.json | 1 + ...f8810ac2b9061cbe043e09c710e1e5709b67c.json | 1 + ...e4560e68af183fa78a504f4964008db1471cb.json | 1 + ...124b3591c681f55ff74250e34ba4a08a7442d.json | 1 + ...d1f736eda44691999891dc6e92a5be76fd9b4.json | 1 + ...aec0647873bb69a832428ce79fa5c9277206e.json | 1 + ...15bcde1700581c86f1cf9a25e9f00de328996.json | 1 + ...acbacb5457d521f38f951e52b2aff6c36eec9.json | 1 + ...b0063315f354305e2279cb5721bc4fa82adda.json | 1 + ...9ef71d7d09036a4185f44ae93ca4c76aaabdf.json | 1 + ...fbe2245d771df3451fdd3358c92726413ac10.json | 1 + ...fde5c860b638ded4585ba66d03c316323c7a0.json | 1 + ...61b9aa88161e4abfe6bee2a1ea49e6458a36b.json | 1 + ...3822a61169189cc4b21da225a33f6ec0d1287.json | 1 + ...409684a9b42eafcce466913e92e0eb432216f.json | 1 + ...641b9f5aeef88371a863409d214d6e2d57999.json | 1 + ...64d3de72c829c0b43277fe1c4df272c66b1a8.json | 1 + ...3cb1cb630e22188e163e186df310b100a378a.json | 1 + ...2e5f679fb124b4820051c6438d9ef7b654cca.json | 1 + ...5cbce2639dd7aa7a803920b347486385e49d7.json | 1 + backend/tests/test_pl_plan_archive_export.py | 123 +++ ...-plan-contract-supplement-dialog-demo.html | 858 ++++++++++++++++++ .../2026-08-27-pl-stop-product-brand-qty.sql | 9 + .../index.vue | 181 ++++ .../pl-plan-archive-segment-block/index.vue | 392 ++++++++ .../business/pl-plan-contract-cell/index.vue | 84 ++ .../composables/useContractDetailDialog.ts | 47 + web-admin/src/composables/useDecimalInput.ts | 81 ++ .../src/utils/pl-plan-archive-brand-view.ts | 211 +++++ 30 files changed, 2319 insertions(+) create mode 100644 backend/app/services/pl_plan_archive_export.py create mode 100644 backend/graphify-out/cache/ast/v0.9.4/0e74bb6d2204c31e14aa66080c94e4bc556ae94559e9e9625f5a5e567c65ef1f.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/207dced51a2ae622c3304213a48f8810ac2b9061cbe043e09c710e1e5709b67c.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/396aec4e4342b4b03a30f6ea9a2e4560e68af183fa78a504f4964008db1471cb.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/3d3b8d04ba6656b10faa11a7d0a124b3591c681f55ff74250e34ba4a08a7442d.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/4281588352403281a021b1f4dbdd1f736eda44691999891dc6e92a5be76fd9b4.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/480b84a1ec36b972a1ba9c95671aec0647873bb69a832428ce79fa5c9277206e.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/5e116c34ba0b36e9f156df067b015bcde1700581c86f1cf9a25e9f00de328996.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/72065d1ab31933bf7e384601e06acbacb5457d521f38f951e52b2aff6c36eec9.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/76e84119a6e46d7875d4f79f821b0063315f354305e2279cb5721bc4fa82adda.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/85ff17cb10f85bf67e6dffaacfd9ef71d7d09036a4185f44ae93ca4c76aaabdf.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/92002b545d4cb3b8066bd6f5e28fbe2245d771df3451fdd3358c92726413ac10.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/92b2880ac79c787ba9d4afdbc1efde5c860b638ded4585ba66d03c316323c7a0.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/98ae03861aa904d298e91d656b261b9aa88161e4abfe6bee2a1ea49e6458a36b.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/9937436d348f5abec0d833954f63822a61169189cc4b21da225a33f6ec0d1287.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/9fe01b4364e7f645da09a8d1248409684a9b42eafcce466913e92e0eb432216f.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/b8a05bf4a63f483898f9c9c1d6c641b9f5aeef88371a863409d214d6e2d57999.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/c5fa5dcaa2a36bbd59437c5080a64d3de72c829c0b43277fe1c4df272c66b1a8.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/daf3f1b60dbd013f02e2e0aa4643cb1cb630e22188e163e186df310b100a378a.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/dd1ad81c08c1a6fc6e651955c412e5f679fb124b4820051c6438d9ef7b654cca.json create mode 100644 backend/graphify-out/cache/ast/v0.9.4/f3f2129118a9776f02a6ae97fa85cbce2639dd7aa7a803920b347486385e49d7.json create mode 100644 backend/tests/test_pl_plan_archive_export.py create mode 100644 docs/fresh-mint-pl-plan-contract-supplement-dialog-demo.html create mode 100644 docs/sql/migrations/2026-08-27-pl-stop-product-brand-qty.sql create mode 100644 web-admin/src/components/business/pl-plan-archive-brand-view-block/index.vue create mode 100644 web-admin/src/components/business/pl-plan-archive-segment-block/index.vue create mode 100644 web-admin/src/components/business/pl-plan-contract-cell/index.vue create mode 100644 web-admin/src/composables/useContractDetailDialog.ts create mode 100644 web-admin/src/composables/useDecimalInput.ts create mode 100644 web-admin/src/utils/pl-plan-archive-brand-view.ts diff --git a/backend/app/services/pl_plan_archive_export.py b/backend/app/services/pl_plan_archive_export.py new file mode 100644 index 000000000..409ae576b --- /dev/null +++ b/backend/app/services/pl_plan_archive_export.py @@ -0,0 +1,313 @@ +"""运输计划归档导出:按装货/送货段 × 段内产品展开,与列表展示规则一致。""" +from __future__ import annotations + +from datetime import date, datetime +from decimal import Decimal +from typing import Optional, Union + +from sqlalchemy.orm import Session + +from app.models.pl_models import PlPlan, PlPlanProduct, PlTransport +from app.schemas.pl.plan import PlanDeliveryRead, PlanLoadRead, PlanStopProductRead +from app.services.pl_internal_customer import is_internal_customer_name +from app.services.pl_plan_stop_service import load_plan_stops_grouped + +StopKind = str # "load" | "delivery" + +PLAN_TYPE_LABELS = { + "direct": "直销单", + "inbound": "入库单", + "outbound": "出库单", +} + +ARCHIVE_STATUS_LABELS = { + "archived": "已归档", + "unarchived": "未归档", +} + +FOLLOW_STATUS_LABELS = { + "wait_notice": "等通知", + "pending_arrange": "待安排", + "arranged": "已安排", + "completed": "已完成", + "cancelled": "已取消", + "draft": "待安排", + "processing": "进行中", +} + +FREIGHT_TYPE_LABELS = { + "by_weight": "按重量", + "by_trip": "按趟", +} + + +def resolve_archive_list_io_column(kind: StopKind, customer_name: Optional[str]) -> str: + """装货/送货段入库出库列方向(与前端 resolveArchiveListIoColumn 一致)。""" + internal = is_internal_customer_name(customer_name) + if kind == "load": + return "outbound" if internal else "inbound" + return "inbound" if internal else "outbound" + + +def _format_date_value(value: Optional[Union[date, datetime, str]]) -> str: + if value is None: + return "" + return str(value)[:10] + + +def _format_plate_display(license_plate: Optional[str], trailer_no: Optional[str]) -> str: + plate = (license_plate or "").strip() + trailer = (trailer_no or "").strip() + if not plate and not trailer: + return "" + if plate and trailer: + return f"{plate}{trailer}" + return plate or trailer + + +def _get_stop_archive_actual_qty(product: PlanStopProductRead, kind: StopKind) -> Optional[Decimal]: + return product.inbound_qty if kind == "load" else product.outbound_qty + + +def _get_stop_archive_unit_price(product: PlanStopProductRead, kind: StopKind) -> Optional[Decimal]: + return product.inbound_price if kind == "load" else product.outbound_price + + +def _get_stop_archive_amount(product: PlanStopProductRead, kind: StopKind) -> Optional[Decimal]: + stored = product.inbound_amount if kind == "load" else product.outbound_amount + if stored is not None: + return stored + qty = _get_stop_archive_actual_qty(product, kind) + price = _get_stop_archive_unit_price(product, kind) + if qty is not None and price is not None: + return qty * price + return None + + +def _stop_kind_label(kind: StopKind, delivery_seq: Optional[int] = None) -> str: + if kind == "load": + return "装货" + return f"送货 #{delivery_seq or 1}" + + +def _stop_time(kind: StopKind, stop: Union[PlanLoadRead, PlanDeliveryRead]) -> str: + if kind == "load": + return _format_date_value(getattr(stop, "load_time", None)) + return _format_date_value(getattr(stop, "delivery_time", None)) + + +def _load_legacy_products_by_plan( + db: Session, tenant_no: str, plan_ids: list[str] +) -> dict[str, list[PlPlanProduct]]: + if not plan_ids: + return {} + products = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.tenant_no == tenant_no, + PlPlanProduct.del_flag == 0, + PlPlanProduct.plan_id.in_(plan_ids), + ) + .order_by(PlPlanProduct.order_num) + .all() + ) + grouped: dict[str, list[PlPlanProduct]] = {} + for product in products: + grouped.setdefault(product.plan_id, []).append(product) + return grouped + + +def _plan_common_export_fields( + plan: PlPlan, + transport: Optional[PlTransport], +) -> dict: + freight_type_raw = transport.freight_type if transport else "by_weight" + freight_type_label = FREIGHT_TYPE_LABELS.get(freight_type_raw, freight_type_raw or "") + freight_price = transport.freight_price if transport else None + freight_amount = plan.freight_amount + if freight_amount is None and transport is not None: + freight_amount = transport.freight_amount + plan_date = _format_date_value(plan.plan_date) + return { + "planNo": plan.plan_no or "", + "planDate": plan_date, + "archiveStatus": ARCHIVE_STATUS_LABELS.get(plan.archive_status or "", plan.archive_status or ""), + "followStatus": FOLLOW_STATUS_LABELS.get(plan.follow_status or "", plan.follow_status or ""), + "planType": PLAN_TYPE_LABELS.get(plan.plan_type or "", plan.plan_type or ""), + "licensePlate": _format_plate_display(plan.license_plate, plan.trailer_no), + "erpEntered": "是" if int(plan.erp_entered or 0) == 1 else "否", + "freightType": freight_type_label, + "freightPrice": freight_price, + "freightAmount": freight_amount, + "remark": plan.remark or "", + } + + +def _empty_product_fields() -> dict: + return { + "productName": "", + "model": "", + "packageSpec": "", + "unit": "", + "planQty": None, + "actualQty": None, + "inboundQty": None, + "outboundQty": None, + "unitPrice": None, + "amount": None, + } + + +def _product_row_from_stop_product( + product: PlanStopProductRead, + kind: StopKind, + customer_name: Optional[str], +) -> dict: + actual_qty = _get_stop_archive_actual_qty(product, kind) + unit_price = _get_stop_archive_unit_price(product, kind) + amount = _get_stop_archive_amount(product, kind) + io_col = resolve_archive_list_io_column(kind, customer_name) + inbound_qty = actual_qty if io_col == "inbound" else None + outbound_qty = actual_qty if io_col == "outbound" else None + return { + "productName": product.product_name or "", + "model": product.model or "", + "packageSpec": product.package_spec or "", + "unit": product.unit or "", + "planQty": product.plan_qty, + "actualQty": actual_qty, + "inboundQty": inbound_qty, + "outboundQty": outbound_qty, + "unitPrice": unit_price, + "amount": amount, + } + + +def _append_stop_product_rows( + rows: list[dict], + row_no: int, + plan_common: dict, + kind: StopKind, + stop: Union[PlanLoadRead, PlanDeliveryRead], + delivery_seq: Optional[int], + products: list[PlanStopProductRead], +) -> int: + customer_name = stop.customer_name or "" + stop_common = { + **plan_common, + "stopKind": _stop_kind_label(kind, delivery_seq), + "stopCustomer": customer_name, + "stopAddress": stop.address or "", + "stopTime": _stop_time(kind, stop), + } + product_rows = products or [None] + for product in product_rows: + row_no += 1 + row = { + **stop_common, + "rowNo": row_no, + **_empty_product_fields(), + } + if product is not None: + row.update(_product_row_from_stop_product(product, kind, customer_name)) + rows.append(row) + return row_no + + +def _append_legacy_plan_product_rows( + rows: list[dict], + row_no: int, + plan: PlPlan, + plan_common: dict, + products: list[PlPlanProduct], +) -> int: + """无段表数据时回退计划产品级导出(兼容旧数据)。""" + stop_common = { + **plan_common, + "stopKind": "", + "stopCustomer": plan.customer_name or plan.supplier_name or "", + "stopAddress": plan.destination_name or "", + "stopTime": _format_date_value(plan.delivery_time), + } + product_rows = products or [None] + for product in product_rows: + row_no += 1 + row = { + **stop_common, + "rowNo": row_no, + **_empty_product_fields(), + } + if product is not None: + row.update( + { + "productName": product.product_name or "", + "model": product.model or "", + "packageSpec": product.package_spec or "", + "unit": product.unit or "", + "planQty": product.quantity, + "actualQty": product.actual_qty, + "inboundQty": product.inbound_qty, + "outboundQty": product.outbound_qty, + "unitPrice": product.inbound_price or product.outbound_price, + "amount": product.inbound_amount or product.outbound_amount, + } + ) + rows.append(row) + return row_no + + +def build_plan_archive_export_rows( + db: Session, + tenant_no: str, + plans: list[PlPlan], + transports_by_id: dict[str, PlTransport], +) -> list[dict]: + """构建归档导出数据行:每计划 × 每段次 × 每段产品一行。""" + if not plans: + return [] + + plan_ids = [plan.id for plan in plans] + stops_by_plan = load_plan_stops_grouped(db, tenant_no, plan_ids) + legacy_products_by_plan = _load_legacy_products_by_plan(db, tenant_no, plan_ids) + + rows: list[dict] = [] + row_no = 0 + for plan in plans: + transport = transports_by_id.get(plan.transport_id) if plan.transport_id else None + plan_common = _plan_common_export_fields(plan, transport) + load_read, delivery_reads = stops_by_plan.get(plan.id, (None, [])) + + has_stops = load_read is not None or bool(delivery_reads) + if not has_stops: + row_no = _append_legacy_plan_product_rows( + rows, + row_no, + plan, + plan_common, + legacy_products_by_plan.get(plan.id, []), + ) + continue + + if load_read is not None: + row_no = _append_stop_product_rows( + rows, + row_no, + plan_common, + "load", + load_read, + None, + load_read.products or [], + ) + for idx, delivery_read in enumerate(delivery_reads): + delivery_seq = delivery_read.seq or (idx + 1) + row_no = _append_stop_product_rows( + rows, + row_no, + plan_common, + "delivery", + delivery_read, + delivery_seq, + delivery_read.products or [], + ) + + return rows diff --git a/backend/graphify-out/cache/ast/v0.9.4/0e74bb6d2204c31e14aa66080c94e4bc556ae94559e9e9625f5a5e567c65ef1f.json b/backend/graphify-out/cache/ast/v0.9.4/0e74bb6d2204c31e14aa66080c94e4bc556ae94559e9e9625f5a5e567c65ef1f.json new file mode 100644 index 000000000..4854220b9 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/0e74bb6d2204c31e14aa66080c94e4bc556ae94559e9e9625f5a5e567c65ef1f.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": "L145"}, {"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": "L161"}, {"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": "L165"}, {"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": "L197"}, {"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": "L201"}, {"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": "L226"}, {"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": "L234"}, {"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": "L266"}, {"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": "L271"}, {"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": "L280"}, {"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": "L300"}, {"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": "L314"}, {"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": "L324"}, {"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_load_transports_by_id", "label": "_load_transports_by_id()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L577"}, {"id": "pltransport", "label": "PlTransport", "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_planexportbody", "label": "PlanExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L592"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "label": "export_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L615"}, {"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": "L709"}, {"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": "L758"}, {"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_contractgapexportbody", "label": "ContractGapExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L810"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "label": "export_contract_gaps()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L823"}, {"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": "L875"}, {"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": "L905"}, {"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": "L989"}, {"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": "L1168"}, {"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": "L1282"}, {"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": "L1353"}, {"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": "L1589"}, {"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": "L1621"}, {"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_patch_plan_erp_entered", "label": "patch_plan_erp_entered()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1653"}, {"id": "erpenteredbody", "label": "ErpEnteredBody", "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": "L1688"}, {"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": "L1694"}, {"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": "L1811"}, {"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": "L1835"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "label": "force_plan_follow_status()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1863"}, {"id": "planforcefollowstatusbody", "label": "PlanForceFollowStatusBody", "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_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1898"}, {"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": "L1960"}, {"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": "L2069"}, {"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": "L2100"}, {"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": "L2139"}, {"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": "L2150"}, {"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_print_delivery_slip", "label": "get_print_delivery_slip()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L2173"}, {"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": "L2197"}, {"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": "L2208"}, {"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": "L2231"}, {"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": "L2242"}, {"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": "L2279"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_151", "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": "L151"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_166", "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": "L166"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_202", "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": "L202"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_235", "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": "L235"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_620", "label": "\u5bfc\u51fa\u8ba1\u5212\u5217\u8868\uff08\u5f53\u524d\u7b5b\u9009\u5168\u91cf\uff0c\u6216 ids \u5df2\u9009\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L620"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_994", "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": "L994"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1595", "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": "L1595"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1699", "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": "L1699"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1869", "label": "\u5f3a\u5236\u4fee\u6539\u8ddf\u8fdb\u72b6\u6001\uff08\u4ec5\u6539\u5b57\u6bb5\uff0c\u4e0d\u4f5c\u5e9f\u8054\u52a8\u3001\u4e0d\u8865\u8fd0\u8f93\u5b89\u6392\uff09\u3002\u9700\u6743\u9650 pl:plan:force-follow-status\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1869"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1903", "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": "L1903"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_2179", "label": "\u6309\u9001\u8d27\u5ba2\u6237\u805a\u5408\u9001(\u63d0)\u8d27\u5355\u6253\u5370\u6570\u636e\uff1b\u4e0d\u4f20 customerId \u65f6\u4ec5\u8fd4\u56de\u5ba2\u6237\u9009\u9879\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L2179"}], "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": "pydantic", "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", "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": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L9", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_menu_guard", "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_services_pl_data_scope", "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_services_pl_plan_arrange_copy_flags", "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_core_tenant_context", "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_utils_excel_export", "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_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L26", "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": "L27", "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": "L28", "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": "L29", "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": "L39", "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": "L40", "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": "L69", "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": "L70", "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": "L71", "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": "L75", "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": "L81", "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": "L82", "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": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_site_link_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L85", "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": "L86", "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": "L87", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_archive_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L91", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_archive_export", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_list_attachments", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_print_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_customer_stop_pref_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L108", "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": "L109", "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": "L145", "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": "L145", "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": "L161", "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": "L161", "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": "L161", "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": "L165", "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": "L165", "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": "L197", "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": "L201", "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": "L226", "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": "L234", "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": "L234", "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": "L234", "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": "L266", "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": "L271", "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": "L280", "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": "L280", "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": "L300", "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": "L300", "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": "L314", "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": "L324", "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": "L324", "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": "L324", "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": "L324", "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": "L324", "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": "L324", "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_load_transports_by_id", "relation": "contains", "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_load_transports_by_id", "target": "session", "relation": "references", "context": "parameter_type", "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_load_transports_by_id", "target": "pltransport", "relation": "references", "context": "generic_arg", "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_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L592", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L592", "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_export_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L615", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L615", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L615", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L615", "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": "L709", "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": "L709", "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": "L709", "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": "L758", "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": "L758", "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": "L758", "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": "L758", "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": "L758", "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": "L758", "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_contractgapexportbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L810", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_contractgapexportbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L810", "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_export_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L823", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_contractgapexportbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L823", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L823", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L823", "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": "L875", "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": "L875", "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": "L875", "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": "L875", "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": "L875", "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": "L905", "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": "L905", "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": "L905", "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": "L905", "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": "L905", "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": "L989", "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": "L989", "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": "L989", "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": "L989", "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": "L989", "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": "L1168", "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": "L1168", "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": "L1168", "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": "L1168", "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": "L1168", "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": "L1282", "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": "L1282", "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": "L1282", "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": "L1282", "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": "L1353", "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": "L1353", "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": "L1353", "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": "L1353", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1353", "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": "L1589", "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": "L1589", "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": "L1589", "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": "L1589", "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": "L1589", "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": "L1621", "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": "L1621", "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": "L1621", "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": "L1621", "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": "L1621", "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_erp_entered", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "erpenteredbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1653", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1653", "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": "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_plan_arrange_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1694", "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": "L1694", "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": "L1694", "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": "L1694", "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": "L1811", "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": "L1811", "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": "L1811", "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": "L1811", "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": "L1835", "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": "L1835", "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": "L1835", "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": "L1835", "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_force_plan_follow_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1863", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "planforcefollowstatusbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1863", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1863", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1863", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1863", "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": "L1898", "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": "L1898", "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": "L1898", "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": "L1898", "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": "L1960", "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": "L1960", "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": "L1960", "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": "L1960", "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": "L1960", "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": "L2069", "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": "L2069", "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": "L2069", "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": "L2069", "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": "L2069", "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": "L2100", "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": "L2100", "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": "L2100", "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": "L2100", "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": "L2100", "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": "L2139", "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": "L2139", "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": "L2139", "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": "L2150", "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": "L2150", "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": "L2150", "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": "L2150", "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_print_delivery_slip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2173", "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": "L2197", "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": "L2197", "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": "L2197", "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": "L2208", "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": "L2208", "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": "L2208", "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": "L2208", "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": "L2231", "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": "L2231", "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": "L2231", "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": "L2242", "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": "L2242", "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": "L2242", "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": "L2242", "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": "L2258", "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": "L2258", "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": "L2258", "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": "L2279", "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": "L2279", "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": "L2279", "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": "L2318", "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": "L2318", "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": "L2318", "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": "L2318", "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": "L210", "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": "L227", "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": "L238", "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": "L259", "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": "L375", "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": "L376", "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": "L495", "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": "L528", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L637", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L638", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L679", "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": "L795", "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": "L913", "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": "L918", "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": "L922", "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": "L1026", "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": "L1033", "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": "L1037", "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": "L1190", "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": "L1193", "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": "L1195", "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": "L1199", "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": "L1249", "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": "L1703", "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": "L1726", "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": "L1995", "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": "L2096", "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": "L2130", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_151", "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": "L151", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_166", "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": "L166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_202", "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": "L202", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_235", "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": "L235", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_620", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L620", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_994", "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": "L994", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1595", "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": "L1595", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1699", "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": "L1699", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1869", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1869", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1903", "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": "L1903", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_2179", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2179", "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": "L152", "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": "L162", "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": "L167", "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": "L168", "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": "L172", "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": "L173", "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": "L180", "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": "L203", "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": "L207", "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": "L209", "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": "L212", "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": "L214", "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": "L218", "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": "L220", "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": "L228", "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": "L231", "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": "L236", "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": "L238"}, {"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": "L241"}, {"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": "L242"}, {"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": "L244", "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": "L245", "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": "L248", "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": "L251", "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": "L259"}, {"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": "L259"}, {"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": "L262"}, {"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": "L263"}, {"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": "L268", "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": "L277", "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": "L282", "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": "L303", "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": "L303", "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": "L308", "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": "L308", "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": "L308", "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": "L316", "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": "L317", "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": "L318", "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": "L318", "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": "L319", "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": "L319", "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": "L359", "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": "L359", "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": "L360", "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": "L360"}, {"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": "L366", "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": "L368", "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": "L370", "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": "L371", "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": "L372", "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": "L372", "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": "L373", "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": "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": "L374", "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": "L374", "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": "L381", "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": "L396", "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": "L396", "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": "L396", "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": "L399", "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": "L404", "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": "L415", "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": "L417", "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": "L417", "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": "L418", "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": "L423", "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": "L423"}, {"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": "L426", "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": "L430", "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": "L430", "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": "L430", "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": "L430", "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": "L437", "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": "L437", "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": "L437"}, {"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": "L439", "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": "L446", "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": "L446", "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": "L449", "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": "L454", "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": "L459", "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": "L464", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_arrange_copy_flags", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_document_attachments_by_plan_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L466", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L471", "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": "L476", "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": "L477", "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": "L483", "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": "L484", "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": "L486", "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": "L490", "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": "L502", "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": "L504", "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": "L506", "receiver": "contracts_by_plan"}, {"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": "L509", "receiver": "arrange_copy_flags"}, {"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": "L514", "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": "L520", "receiver": "document_attachments_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L521", "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": "L524", "receiver": "stops_by_plan"}, {"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": "L526", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L581", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "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": "L581"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L585", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L622", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L622", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L623", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L623"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L628", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L630", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L632", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L634", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L634", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L635", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L635", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "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_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L636", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L642", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "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_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L652", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "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_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L654", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L658", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L666", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L667", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L667", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L668", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L673", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L673"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L674", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L674", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L674", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L675", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L675", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L676", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L676", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "build_plan_archive_export_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L680", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "filter_export_columns", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L681", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "PLAN_ARCHIVE_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L681"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L687", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L687", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L688", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L690", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L692", "receiver": "items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "filter_export_columns", "is_member_call": false, "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_export_plans", "callee": "PLAN_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L696", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L705", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L705"}, {"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": "L716", "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": "L716", "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": "L717", "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": "L717", "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": "L717", "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": "L723", "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": "L723", "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": "L727", "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": "L730", "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": "L730", "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": "L730"}, {"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": "L734", "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": "L735"}, {"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": "L734", "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": "L739", "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": "L744", "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": "L744"}, {"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": "L750", "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": "L752", "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": "L781", "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": "L781", "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": "L782", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L829", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L829", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L830", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "EXPORT_MAX_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L835"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "EXPORT_MAX_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L849", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L850", "receiver": "plan_type_labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L850", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L850", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L851", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L860", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L863", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "filter_export_columns", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L864", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "CONTRACT_GAP_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L864"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L865", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L865", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L866", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L871", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "e", "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_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": "L883", "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": "L883", "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": "L884", "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": "L885", "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": "L895", "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": "L910", "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": "L910", "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": "L916", "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": "L919", "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": "L965", "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": "L970", "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": "L979", "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": "L981", "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": "L983", "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": "L984", "receiver": "db"}, {"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": "L995", "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": "L995", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "uses_multi_stop_payload", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L996", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_plan_stops_write", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1000", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "collect_stop_qty_warnings", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1007", "receiver": null}, {"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": "L1011", "receiver": null}, {"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": "L1012", "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": "L1029", "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": "L1031", "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": "L1034", "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": "L1075", "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": "L1082", "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": "L1083", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "sync_plan_legacy_from_stops", "is_member_call": false, "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_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": "L1090", "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": "L1095", "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": "L1096", "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": "L1105", "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": "L1106", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "replace_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "safe_upsert_prefs_from_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1119", "receiver": null}, {"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": "L1128", "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": "L1139", "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": "L1149", "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": "L1150", "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": "L1152", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1157", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1157", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1158", "receiver": null}, {"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": "L1176", "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": "L1176", "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": "L1180", "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": "L1180", "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": "L1180"}, {"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": "L1185", "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": "L1187", "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": "L1196", "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": "L1210", "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": "L1213", "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": "L1215", "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": "L1230", "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": "L1234", "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": "L1234"}, {"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": "L1244", "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": "L1250", "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": "L1269", "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": "L1271", "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": "L1272", "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": "L1287", "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": "L1287", "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": "L1288", "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": "L1288"}, {"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": "L1291", "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": "L1291", "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": "L1291"}, {"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": "L1300", "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": "L1305", "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": "L1313", "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": "L1317"}, {"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": "L1319", "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": "L1319"}, {"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": "L1320", "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": "L1322", "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": "L1322"}, {"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": "L1326", "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": "L1328"}, {"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": "L1329"}, {"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": "L1330"}, {"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": "L1333", "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": "L1333"}, {"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": "L1335", "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": "L1336"}, {"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": "L1337", "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": "L1339"}, {"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": "L1337", "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": "L1338"}, {"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": "L1340"}, {"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": "L1341"}, {"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": "L1342", "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": "L1342"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_plan_stops_grouped", "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", "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": "L1342"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1343", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "result", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1343"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "stops", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1343"}, {"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": "L1344"}, {"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": "L1359", "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": "L1359", "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": "L1360", "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": "L1363", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "uses_multi_stop_payload", "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_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": "L1371", "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": "L1383", "receiver": "update_data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "validate_plan_stops_write", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1401", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_stop_qty_warnings", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1409", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "sync_plan_legacy_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1410", "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": "L1417", "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": "L1417", "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": "L1422", "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": "L1422", "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": "L1432", "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": "L1443", "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": "L1453", "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": "L1453", "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": "L1462", "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": "L1462"}, {"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": "L1469", "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": "L1479", "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": "L1479", "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": "L1479"}, {"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": "L1486", "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": "L1494", "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": "L1499", "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": "L1508", "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": "L1517", "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": "L1518", "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": "L1520", "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": "L1522", "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": "L1524", "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": "L1527", "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": "L1527"}, {"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": "L1538", "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": "L1548", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "replace_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1556", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "safe_upsert_prefs_from_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1566", "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": "L1576", "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": "L1577", "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": "L1578", "receiver": "PlanWithProducts"}, {"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": "L1583", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1583", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "attach_plan_stops_to_item", "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_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": "L1596", "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": "L1596", "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": "L1597", "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": "L1598", "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": "L1605", "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": "L1607", "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": "L1607", "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": "L1607"}, {"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": "L1615", "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": "L1628", "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": "L1628", "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": "L1629", "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": "L1630", "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": "L1637", "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": "L1639", "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": "L1639", "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": "L1639"}, {"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": "L1647", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "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_patch_plan_erp_entered", "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_patch_plan_erp_entered", "callee": "set_plan_erp_entered", "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_patch_plan_erp_entered", "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_patch_plan_erp_entered", "callee": "order_by", "is_member_call": true, "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_patch_plan_erp_entered", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1670", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "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": "L1670"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1678", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1680", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "load_plan_document_attachments_by_plan_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1680", "receiver": null}, {"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": "L1689", "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": "L1700", "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": "L1700", "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": "L1701", "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": "L1714", "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": "L1714", "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": "L1714"}, {"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": "L1725", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "plan_requires_site_link", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1727", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_site_records_for_arranged_plan", "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_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": "L1736", "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": "L1736"}, {"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": "L1749", "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": "L1749", "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": "L1749"}, {"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": "L1757", "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": "L1757", "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": "L1757"}, {"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": "L1765", "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": "L1766", "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": "L1780", "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": "L1785", "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": "L1786", "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": "L1791", "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": "L1817", "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": "L1817", "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": "L1818", "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": "L1821", "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": "L1823", "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": "L1825", "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": "L1829", "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": "L1830", "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": "L1841", "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": "L1841", "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": "L1842", "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": "L1845", "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": "L1847", "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": "L1851", "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": "L1852", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "get_user_menu_codes", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1871", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1873", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1875", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1877", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1882", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "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": "L1882", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1883", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1887", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1888", "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": "L1904", "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": "L1904", "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": "L1905", "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": "L1908", "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": "L1911", "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": "L1915", "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": "L1915", "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": "L1915"}, {"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": "L1925", "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": "L1932", "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": "L1932"}, {"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": "L1933", "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": "L1942", "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": "L1949", "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": "L1950", "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": "L1966", "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": "L1966", "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": "L1967", "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": "L1970", "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": "L1976", "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": "L1976", "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": "L1976"}, {"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": "L1985", "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": "L1989", "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": "L1994", "receiver": "db"}, {"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": "L2000", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_stop_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2001", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "sync_plan_products_from_stop_archive", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2009", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_brand_qtys_only", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2013", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_inventory_for_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2020", "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": "L2029", "receiver": null}, {"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": "L2030", "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": "L2033", "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": "L2041", "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": "L2046", "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": "L2054", "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": "L2064", "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": "L2075", "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": "L2075", "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": "L2076", "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": "L2077", "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": "L2084", "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": "L2095", "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": "L2107", "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": "L2107", "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": "L2108", "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": "L2109", "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": "L2117", "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": "L2118", "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": "L2129", "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": "L2144", "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": "L2144", "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": "L2145", "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": "L2156", "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": "L2156", "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": "L2157", "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": "L2159", "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": "L2161", "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": "L2164", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "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": "L2180", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2182", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "get_delivery_slip_print_context", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2184", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "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": "L2193"}, {"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": "L2202", "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": "L2202", "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": "L2203", "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": "L2214", "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": "L2214", "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": "L2215", "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": "L2217", "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": "L2219", "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": "L2222", "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": "L2236", "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": "L2236", "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": "L2237", "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": "L2248", "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": "L2248", "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": "L2249", "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": "L2251", "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": "L2254", "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": "L2263", "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": "L2263", "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": "L2264", "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": "L2266", "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": "L2269", "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": "L2284", "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": "L2284", "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": "L2285", "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": "L2288", "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": "L2290", "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": "L2292", "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": "L2294", "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": "L2294", "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": "L2298", "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": "L2298", "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": "L2298"}, {"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": "L2304", "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": "L2304", "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": "L2304"}, {"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": "L2310", "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": "L2320", "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": "L2320", "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": "L2320"}, {"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": "L2329", "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": "L2330", "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": "L2330"}], "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_contractgapexportbody", "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_export_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "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_print_delivery_slip", "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_load_transports_by_id", "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_erp_entered", "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_planexportbody", "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/207dced51a2ae622c3304213a48f8810ac2b9061cbe043e09c710e1e5709b67c.json b/backend/graphify-out/cache/ast/v0.9.4/207dced51a2ae622c3304213a48f8810ac2b9061cbe043e09c710e1e5709b67c.json new file mode 100644 index 000000000..fd87bf239 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/207dced51a2ae622c3304213a48f8810ac2b9061cbe043e09c710e1e5709b67c.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_stop_contract_gap", "label": "stop_contract_gap()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L45"}, {"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": "L50"}, {"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": "L54"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "label": "compute_plan_gap_sides_from_stops()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L69"}, {"id": "planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plandeliveryread", "label": "PlanDeliveryRead", "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_stop_contract_exists", "label": "_stop_contract_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L103"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "label": "_load_stop_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L120"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "label": "_delivery_stop_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L143"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "label": "_legacy_supplier_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L166"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "label": "_legacy_demander_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L192"}, {"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": "L218"}, {"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": "L228"}, {"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": "L232"}, {"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": "L236"}, {"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": "L275"}, {"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": "L296"}, {"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_write_stop_contract_rows", "label": "_write_stop_contract_rows()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L431"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "label": "_clear_legacy_side_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L475"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "label": "update_plan_stop_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L496"}, {"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": "L605"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_78", "label": "\u6309\u6bb5\u6b21\u6c47\u603b\u8ba1\u5212\u662f\u5426\u4ecd\u6709\u5408\u540c\u7f3a\u53e3\uff08supplier=\u88c5\u8d27\u4fa7\uff0cdemander=\u9001\u8d27\u4fa7\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L78"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_219", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u4efb\u4e00\u6bb5\u6b21\uff08\u6216\u65e7\u8ba1\u5212\u7ea7\uff09\u5b58\u5728\u5408\u540c\u7f3a\u53e3\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L219"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_615", "label": "\u5355\u4fa7\u4fdd\u5b58\u8ba1\u5212\u5408\u540c\u5173\u8054\uff08\u65e7\u8ba1\u5212\u7ea7\u63a5\u53e3\uff0c\u517c\u5bb9\u4fdd\u7559\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L615"}], "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_core_utils", "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_models_pl_models", "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_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L18", "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": "L25", "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": "L26", "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": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_plan_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L35", "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": "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_stop_contract_gap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L45", "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": "L50", "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": "L54", "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_plan_gap_sides_from_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L69", "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_stop_contract_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L103", "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_stop_gap_expr", "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_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L143", "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_legacy_supplier_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L166", "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_legacy_demander_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L192", "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": "L218", "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": "L228", "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": "L232", "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": "L236", "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": "L236", "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": "L236", "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": "L236", "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": "L236", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "planloadread", "relation": "references", "context": "generic_arg", "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_build_plan_contract_gap_read", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "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_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": "L236", "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": "L275", "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": "L275", "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": "L275", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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_write_stop_contract_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L431", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L431", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L431", "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_clear_legacy_side_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L475", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L475", "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_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L496", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L496", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L496", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L496", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L496", "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": "L605", "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": "L605", "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": "L605", "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": "L605", "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": "L605", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "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_compute_plan_gap_sides_from_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "relation": "calls", "context": "call", "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_load_stop_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L183", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L209", "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_load_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L221", "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_delivery_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L222", "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_legacy_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L223", "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_legacy_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L224", "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_load_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L229", "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_legacy_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L229", "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_delivery_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L233", "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_legacy_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L233", "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_plan_gap_sides_from_stops", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L246", "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": "L254", "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": "L265", "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": "L316", "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": "L325", "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": "L327", "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": "L411", "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": "L419", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L563", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L570", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L577", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L591", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L595", "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": "L639", "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": "L660", "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": "L664", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_78", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_219", "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": "L219", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_615", "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": "L615", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "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": "L47", "receiver": null}, {"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": "L51", "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": "L63", "receiver": "gaps"}, {"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": "L65", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L97", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L99", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_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": "L104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_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": "L105", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_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": "L105", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_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": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L111", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_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": "L112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L113", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L121"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L122", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L123", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L125", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "callee": "exists", "is_member_call": false, "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_stop_gap_expr", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "callee": "PLAN_CONTRACT_SIDE_LOAD", "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": "L137"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "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": "L137"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L144"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L145", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L146", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L151", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L151", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "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": "L160"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "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": "L160"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L167"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L168", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L176", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L178", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "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": "L187"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L193"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L194", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L201", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L202", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L204", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L206", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "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": "L213"}, {"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": "L220", "receiver": null}, {"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": "L229", "receiver": null}, {"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": "L233", "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": "L282", "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": "L282", "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": "L282"}, {"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": "L284", "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": "L287", "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": "L287", "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": "L292", "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": "L292", "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": "L292", "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": "L312", "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": "L312"}, {"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": "L318", "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": "L318"}, {"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": "L321", "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": "L323", "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": "L323", "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": "L330", "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": "L334", "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": "L336", "receiver": "kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L337", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L338", "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": "L342", "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": "L342", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L345", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L346", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L346", "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": "L350", "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": "L350", "receiver": "func"}, {"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": "L354", "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": "L355", "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": "L355", "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": "L356", "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": "L356", "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": "L369", "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": "L371", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L372", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L373", "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": "L377", "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": "L377", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L380", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L381", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L381", "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": "L385", "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": "L385", "receiver": "func"}, {"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": "L389", "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": "L390", "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": "L391", "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": "L391", "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": "L392", "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": "L392", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L399", "receiver": null}, {"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": "L401", "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": "L401", "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": "L401", "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": "L402", "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": "L407", "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": "L407", "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": "L410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L412", "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": "L416", "receiver": "contracts_by_plan"}, {"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": "L417", "receiver": "stops_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": "L418", "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": "L423", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L442", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L443", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L443", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "PlPlanContract", "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": "L443"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L455", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "PlPlanContract", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L456", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L457", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L483", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L484", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L484", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "PlPlanContract", "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": "L484"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L488", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L488", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L489", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L509", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L512", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L514", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L518", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L518", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PlPlanLoad", "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": "L518"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L527"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L528"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L532", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L532", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PlPlanDelivery", "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": "L532"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L541"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L542"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L546", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "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": "L548", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L549", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L551", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L555", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L562", "receiver": "resolved"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L588", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L588", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L591", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L592", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L592", "receiver": null}, {"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": "L617", "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": "L618"}, {"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": "L618"}, {"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": "L619", "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": "L621", "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": "L621", "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": "L624", "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": "L631", "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": "L638", "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": "L647", "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": "L657", "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": "L657", "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": "L660", "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": "L661", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L661", "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_clear_legacy_side_contracts", "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_compute_plan_gap_sides_from_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "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_legacy_demander_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_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_load_stop_gap_expr", "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_is_exempt", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "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", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/396aec4e4342b4b03a30f6ea9a2e4560e68af183fa78a504f4964008db1471cb.json b/backend/graphify-out/cache/ast/v0.9.4/396aec4e4342b4b03a30f6ea9a2e4560e68af183fa78a504f4964008db1471cb.json new file mode 100644 index 000000000..3e2b63b02 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/396aec4e4342b4b03a30f6ea9a2e4560e68af183fa78a504f4964008db1471cb.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": "L150"}, {"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": "L166"}, {"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": "L170"}, {"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": "L202"}, {"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": "L206"}, {"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": "L231"}, {"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": "L239"}, {"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": "L271"}, {"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": "L276"}, {"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": "L285"}, {"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": "L305"}, {"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": "L319"}, {"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": "L329"}, {"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_load_transports_by_id", "label": "_load_transports_by_id()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L582"}, {"id": "pltransport", "label": "PlTransport", "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_planexportbody", "label": "PlanExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L597"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "label": "export_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L620"}, {"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": "L714"}, {"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": "L763"}, {"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_contractgapexportbody", "label": "ContractGapExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L815"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "label": "export_contract_gaps()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L828"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "label": "put_plan_stop_contracts()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L880"}, {"id": "planstopcontractsupdatebody", "label": "PlanStopContractsUpdateBody", "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_put_plan_side_contracts", "label": "put_plan_side_contracts()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L905"}, {"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": "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": "L935"}, {"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": "L1019"}, {"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": "L1198"}, {"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": "L1312"}, {"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": "L1383"}, {"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": "L1619"}, {"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": "L1651"}, {"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_patch_plan_erp_entered", "label": "patch_plan_erp_entered()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1683"}, {"id": "erpenteredbody", "label": "ErpEnteredBody", "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": "L1718"}, {"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": "L1724"}, {"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": "L1841"}, {"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": "L1865"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "label": "force_plan_follow_status()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1893"}, {"id": "planforcefollowstatusbody", "label": "PlanForceFollowStatusBody", "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_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1928"}, {"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": "L1990"}, {"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": "L2099"}, {"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": "L2130"}, {"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": "L2169"}, {"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": "L2180"}, {"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_print_delivery_slip", "label": "get_print_delivery_slip()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L2203"}, {"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": "L2227"}, {"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": "L2238"}, {"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": "L2261"}, {"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": "L2272"}, {"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": "L2309"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_156", "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": "L156"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_171", "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": "L171"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_207", "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": "L207"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_240", "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": "L240"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_625", "label": "\u5bfc\u51fa\u8ba1\u5212\u5217\u8868\uff08\u5f53\u524d\u7b5b\u9009\u5168\u91cf\uff0c\u6216 ids \u5df2\u9009\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L625"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1024", "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": "L1024"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1625", "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": "L1625"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1729", "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": "L1729"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1899", "label": "\u5f3a\u5236\u4fee\u6539\u8ddf\u8fdb\u72b6\u6001\uff08\u4ec5\u6539\u5b57\u6bb5\uff0c\u4e0d\u4f5c\u5e9f\u8054\u52a8\u3001\u4e0d\u8865\u8fd0\u8f93\u5b89\u6392\uff09\u3002\u9700\u6743\u9650 pl:plan:force-follow-status\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1899"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1933", "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": "L1933"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_2209", "label": "\u6309\u9001\u8d27\u5ba2\u6237\u805a\u5408\u9001(\u63d0)\u8d27\u5355\u6253\u5370\u6570\u636e\uff1b\u4e0d\u4f20 customerId \u65f6\u4ec5\u8fd4\u56de\u5ba2\u6237\u9009\u9879\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L2209"}], "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": "pydantic", "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", "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": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L9", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_menu_guard", "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_services_pl_data_scope", "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_services_pl_plan_arrange_copy_flags", "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_core_tenant_context", "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_utils_excel_export", "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_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L26", "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": "L27", "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": "L28", "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": "L29", "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": "L39", "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": "L40", "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": "L70", "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": "L75", "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": "L76", "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": "L80", "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": "L86", "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": "L87", "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": "L88", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_site_link_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L90", "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": "L91", "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": "L92", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_archive_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_archive_export", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L101", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_list_attachments", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L102", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_print_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L103", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_stop_service", "relation": "imports_from", "context": "import", "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": "app_services_pl_customer_stop_pref_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L113", "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": "L114", "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": "L150", "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": "L150", "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": "L166", "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": "L166", "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": "L166", "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": "L170", "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": "L170", "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": "L202", "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": "L206", "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": "L231", "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": "L239", "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": "L239", "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": "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_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L271", "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": "L276", "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": "L285", "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": "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_plan_product_name_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L305", "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": "L305", "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": "L319", "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": "L329", "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": "L329", "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": "L329", "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": "L329", "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": "L329", "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": "L329", "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_load_transports_by_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L582", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L582", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L582", "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_planexportbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L597", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L597", "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_export_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L620", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L620", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L620", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L620", "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": "L714", "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": "L714", "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": "L714", "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": "L763", "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": "L763", "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": "L763", "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": "L763", "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": "L763", "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": "L763", "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_contractgapexportbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L815", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_contractgapexportbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L815", "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_export_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_contractgapexportbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L828", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L828", "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_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L880", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "target": "planstopcontractsupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L880", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L880", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L880", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L880", "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": "L905", "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": "L905", "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": "L905", "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": "L905", "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": "L905", "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": "L935", "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": "L935", "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": "L935", "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": "L935", "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": "L935", "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": "L1019", "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": "L1019", "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": "L1019", "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": "L1019", "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": "L1019", "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": "L1198", "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": "L1198", "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": "L1198", "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": "L1198", "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": "L1198", "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": "L1312", "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": "L1312", "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": "L1312", "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": "L1312", "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": "L1383", "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": "L1383", "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": "L1383", "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": "L1383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1383", "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": "L1619", "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": "L1619", "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": "L1619", "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": "L1619", "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": "L1619", "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": "L1651", "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": "L1651", "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": "L1651", "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": "L1651", "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": "L1651", "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_erp_entered", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1683", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "erpenteredbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1683", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1683", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1683", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1683", "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": "L1718", "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": "L1724", "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": "L1724", "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": "L1724", "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": "L1724", "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": "L1841", "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": "L1841", "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": "L1841", "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": "L1841", "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": "L1865", "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": "L1865", "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": "L1865", "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": "L1865", "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_force_plan_follow_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1893", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "planforcefollowstatusbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1893", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1893", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1893", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1893", "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": "L1928", "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": "L1928", "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": "L1928", "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": "L1928", "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": "L1990", "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": "L1990", "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": "L1990", "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": "L1990", "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": "L1990", "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": "L2099", "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": "L2099", "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": "L2099", "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": "L2099", "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": "L2099", "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": "L2130", "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": "L2130", "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": "L2130", "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": "L2130", "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": "L2130", "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": "L2169", "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": "L2169", "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": "L2169", "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": "L2180", "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": "L2180", "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": "L2180", "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": "L2180", "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_print_delivery_slip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2203", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2203", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2203", "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": "L2227", "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": "L2227", "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": "L2227", "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": "L2238", "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": "L2238", "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": "L2238", "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": "L2238", "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": "L2261", "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": "L2261", "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": "L2261", "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": "L2272", "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": "L2272", "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": "L2272", "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": "L2272", "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": "L2288", "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": "L2288", "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": "L2288", "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": "L2309", "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": "L2309", "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": "L2309", "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": "L2348", "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": "L2348", "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": "L2348", "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": "L2348", "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": "L215", "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": "L232", "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": "L243", "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": "L264", "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": "L380", "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": "L381", "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": "L500", "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": "L533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L642", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L643", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L684", "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": "L800", "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": "L943", "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": "L948", "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": "L952", "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": "L1056", "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": "L1063", "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": "L1067", "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": "L1220", "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": "L1223", "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": "L1225", "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": "L1229", "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": "L1279", "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": "L1733", "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": "L1756", "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": "L2025", "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": "L2126", "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": "L2160", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_156", "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": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_171", "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": "L171", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_207", "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": "L207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_240", "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": "L240", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_625", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L625", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1024", "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": "L1024", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1625", "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": "L1625", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1729", "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": "L1729", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1899", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1899", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1933", "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": "L1933", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_2209", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2209", "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": "L157", "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": "L167", "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": "L172", "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": "L173", "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": "L177", "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": "L178", "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": "L185", "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": "L208", "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": "L212", "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": "L214", "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": "L217", "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": "L219", "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": "L223", "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": "L225", "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": "L233", "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": "L236", "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": "L241", "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": "L243"}, {"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": "L246"}, {"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": "L247"}, {"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": "L249", "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": "L250", "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": "L253", "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": "L256", "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": "L264"}, {"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": "L264"}, {"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": "L267"}, {"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": "L268"}, {"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": "L273", "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": "L282", "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": "L287", "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": "L308", "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": "L308", "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": "L313", "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": "L313", "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": "L313", "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": "L321", "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": "L322", "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": "L323", "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": "L323", "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": "L324", "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": "L324", "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": "L364", "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": "L364", "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": "L365", "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": "L365"}, {"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": "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": "L373", "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": "L375", "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": "L376", "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": "L377", "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": "L377", "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": "L378", "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": "L378", "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": "L379", "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": "L379", "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": "L386", "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": "L401", "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": "L401", "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": "L401", "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": "L404", "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": "L409", "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": "L420", "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": "L422", "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": "L422", "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": "L423", "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": "L428", "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": "L428"}, {"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": "L431", "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": "L435", "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": "L435", "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": "L435", "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": "L435", "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": "L442", "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": "L442", "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": "L442"}, {"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": "L444", "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": "L451", "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": "L451", "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": "L454", "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": "L459", "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": "L464", "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": "L469", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_arrange_copy_flags", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L470", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_document_attachments_by_plan_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L471", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L476", "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": "L481", "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": "L482", "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": "L488", "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": "L489", "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": "L491", "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": "L495", "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": "L507", "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": "L509", "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": "L511", "receiver": "contracts_by_plan"}, {"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": "L514", "receiver": "arrange_copy_flags"}, {"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": "L519", "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": "L525", "receiver": "document_attachments_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L526", "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": "L529", "receiver": "stops_by_plan"}, {"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": "L531", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L586", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "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": "L586"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L590", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L627", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L627", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L628", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L628"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L635", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L637", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L638", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L639", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L639", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L640", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L640", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L641", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L641", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L647", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L657", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L657", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L657", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L659", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "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_export_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": "L671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L673", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "in_", "is_member_call": true, "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_export_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": "L678", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L678"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "limit", "is_member_call": true, "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_export_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L679", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "desc", "is_member_call": true, "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_export_plans", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L680", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L680", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L681", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L681", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "build_plan_archive_export_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L685", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "filter_export_columns", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L686", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "PLAN_ARCHIVE_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L686"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L692", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L692", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L695", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L697", "receiver": "items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "filter_export_columns", "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_export_plans", "callee": "PLAN_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L698"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L701", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L710", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L710"}, {"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": "L721", "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": "L721", "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": "L722", "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": "L722", "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": "L722", "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": "L728", "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": "L728", "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": "L732", "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": "L735", "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": "L735", "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": "L735"}, {"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": "L739", "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": "L740"}, {"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": "L739", "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": "L744", "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": "L749", "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": "L749"}, {"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": "L755", "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": "L757", "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": "L786", "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": "L786", "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": "L787", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L834", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L834", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L835", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "EXPORT_MAX_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L840"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "EXPORT_MAX_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L848"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L854", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L855", "receiver": "plan_type_labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L855", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L855", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L856", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L865", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L868", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "filter_export_columns", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L869", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "CONTRACT_GAP_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L869"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L870", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L870", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L871", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L876", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L876"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_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": "L887", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_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": "L887", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L888", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "callee": "update_plan_stop_contracts", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L889", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_put_plan_stop_contracts", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L900", "receiver": "db"}, {"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": "L913", "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": "L913", "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": "L914", "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": "L915", "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": "L925", "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": "L940", "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": "L940", "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": "L946", "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": "L949", "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": "L995", "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": "L1000", "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": "L1009", "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": "L1011", "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": "L1013", "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": "L1014", "receiver": "db"}, {"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": "L1025", "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": "L1025", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "uses_multi_stop_payload", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1026", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_plan_stops_write", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1030", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "collect_stop_qty_warnings", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1037", "receiver": null}, {"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": "L1041", "receiver": null}, {"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": "L1042", "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": "L1059", "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": "L1061", "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": "L1064", "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": "L1105", "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": "L1112", "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": "L1113", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "sync_plan_legacy_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1116", "receiver": null}, {"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": "L1120", "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": "L1125", "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": "L1126", "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": "L1135", "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": "L1136", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "replace_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1139", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "safe_upsert_prefs_from_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1149", "receiver": null}, {"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": "L1158", "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": "L1169", "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": "L1179", "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": "L1180", "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": "L1182", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1187", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1187", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "attach_plan_stops_to_item", "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_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": "L1206", "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": "L1206", "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": "L1210", "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": "L1210", "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": "L1210"}, {"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": "L1215", "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": "L1217", "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": "L1226", "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": "L1240", "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": "L1243", "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": "L1245", "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": "L1260", "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": "L1264", "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": "L1264"}, {"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": "L1274", "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": "L1280", "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": "L1299", "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": "L1301", "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": "L1302", "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": "L1317", "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": "L1317", "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": "L1318", "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": "L1318"}, {"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": "L1321", "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": "L1321", "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": "L1321"}, {"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": "L1330", "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": "L1335", "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": "L1343", "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": "L1347"}, {"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": "L1349", "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": "L1349"}, {"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": "L1350", "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": "L1352", "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": "L1352"}, {"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": "L1356", "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": "L1358"}, {"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": "L1359"}, {"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": "L1360"}, {"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": "L1363", "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": "L1363"}, {"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": "L1365", "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": "L1366"}, {"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": "L1367", "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": "L1369"}, {"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": "L1367", "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": "L1368"}, {"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": "L1370"}, {"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": "L1371"}, {"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": "L1372", "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": "L1372"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1372", "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": "L1372"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "result", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1373"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "stops", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1373"}, {"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": "L1374"}, {"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": "L1389", "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": "L1389", "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": "L1390", "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": "L1393", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "uses_multi_stop_payload", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1395", "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": "L1401", "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": "L1413", "receiver": "update_data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "validate_plan_stops_write", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1431", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_stop_qty_warnings", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1439", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "sync_plan_legacy_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1440", "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": "L1447", "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": "L1447", "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": "L1452", "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": "L1452", "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": "L1462", "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": "L1473", "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": "L1483", "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": "L1483", "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": "L1492", "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": "L1492"}, {"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": "L1499", "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": "L1509", "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": "L1509", "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": "L1509"}, {"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": "L1516", "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": "L1524", "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": "L1529", "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": "L1538", "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": "L1547", "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": "L1548", "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": "L1550", "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": "L1552", "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": "L1554", "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": "L1557", "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": "L1557"}, {"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": "L1568", "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": "L1578", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "replace_plan_stops", "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", "callee": "safe_upsert_prefs_from_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1596", "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": "L1606", "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": "L1607", "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": "L1608", "receiver": "PlanWithProducts"}, {"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": "L1613", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_stops_grouped", "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", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1614", "receiver": null}, {"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": "L1626", "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": "L1626", "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": "L1627", "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": "L1628", "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": "L1635", "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": "L1637", "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": "L1637", "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": "L1637"}, {"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": "L1645", "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": "L1658", "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": "L1658", "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": "L1659", "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": "L1660", "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": "L1667", "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": "L1669", "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": "L1669", "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": "L1669"}, {"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": "L1677", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "get_tenant_no", "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_patch_plan_erp_entered", "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": "L1690", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "set_plan_erp_entered", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1691", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1698", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1700", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1700", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "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": "L1700"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1708", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1710", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "load_plan_document_attachments_by_plan_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1710", "receiver": null}, {"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": "L1719", "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": "L1730", "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": "L1730", "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": "L1731", "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": "L1744", "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": "L1744", "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": "L1744"}, {"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": "L1755", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "plan_requires_site_link", "is_member_call": false, "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_get_plan_arrange_info", "callee": "build_site_records_for_arranged_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1758", "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": "L1766", "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": "L1766"}, {"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": "L1779", "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": "L1779", "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": "L1779"}, {"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": "L1787", "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": "L1787", "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": "L1787"}, {"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": "L1795", "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": "L1796", "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": "L1810", "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": "L1815", "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": "L1816", "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": "L1821", "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": "L1847", "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": "L1847", "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": "L1848", "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": "L1851", "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": "L1853", "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": "L1855", "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": "L1859", "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": "L1860", "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": "L1871", "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": "L1871", "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": "L1872", "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": "L1875", "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": "L1877", "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": "L1881", "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": "L1882", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "get_user_menu_codes", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1901", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1903", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1905", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1907", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1912", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "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": "L1912", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1913", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1917", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1918", "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": "L1934", "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": "L1934", "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": "L1935", "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": "L1938", "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": "L1941", "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": "L1945", "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": "L1945", "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": "L1945"}, {"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": "L1955", "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": "L1962", "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": "L1962"}, {"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": "L1963", "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": "L1972", "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": "L1979", "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": "L1980", "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": "L1996", "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": "L1996", "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": "L1997", "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": "L2000", "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": "L2006", "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": "L2006", "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": "L2006"}, {"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": "L2015", "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": "L2019", "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": "L2024", "receiver": "db"}, {"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": "L2030", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_stop_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2031", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "sync_plan_products_from_stop_archive", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2039", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_brand_qtys_only", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2043", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_inventory_for_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2050", "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": "L2059", "receiver": null}, {"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": "L2060", "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": "L2063", "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": "L2071", "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": "L2076", "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": "L2084", "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": "L2094", "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": "L2105", "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": "L2105", "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": "L2106", "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": "L2107", "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": "L2114", "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": "L2125", "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": "L2137", "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": "L2137", "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": "L2138", "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": "L2139", "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": "L2147", "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": "L2148", "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": "L2159", "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": "L2174", "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": "L2174", "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": "L2175", "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": "L2186", "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": "L2186", "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": "L2187", "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": "L2189", "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": "L2191", "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": "L2194", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2210", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "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": "L2210", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2211", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "get_delivery_slip_print_context", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2214", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2223", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "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": "L2223"}, {"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": "L2232", "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": "L2232", "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": "L2233", "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": "L2244", "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": "L2244", "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": "L2245", "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": "L2247", "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": "L2249", "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": "L2252", "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": "L2266", "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": "L2266", "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": "L2267", "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": "L2278", "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": "L2278", "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": "L2279", "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": "L2281", "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": "L2284", "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": "L2293", "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": "L2293", "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": "L2294", "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": "L2296", "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": "L2299", "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": "L2314", "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": "L2314", "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": "L2315", "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": "L2318", "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": "L2320", "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": "L2322", "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": "L2324", "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": "L2324", "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": "L2328", "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": "L2328", "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": "L2328"}, {"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": "L2334", "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": "L2334", "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": "L2334"}, {"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": "L2340", "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": "L2350", "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": "L2350", "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": "L2350"}, {"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": "L2359", "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": "L2360", "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": "L2360"}], "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_contractgapexportbody", "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_export_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "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_print_delivery_slip", "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_load_transports_by_id", "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_erp_entered", "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_planexportbody", "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_put_plan_stop_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/3d3b8d04ba6656b10faa11a7d0a124b3591c681f55ff74250e34ba4a08a7442d.json b/backend/graphify-out/cache/ast/v0.9.4/3d3b8d04ba6656b10faa11a7d0a124b3591c681f55ff74250e34ba4a08a7442d.json new file mode 100644 index 000000000..7395758f5 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/3d3b8d04ba6656b10faa11a7d0a124b3591c681f55ff74250e34ba4a08a7442d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "label": "pl_plan_archive_stop_service.py", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "label": "_require_qty()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "label": "_apply_stop_product_archive()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37"}, {"id": "plplanloadproduct", "label": "PlPlanLoadProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "plplandeliveryproduct", "label": "PlPlanDeliveryProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "planarchivestopproductitem", "label": "PlanArchiveStopProductItem", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "label": "_brand_rows_from_item()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L64"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "label": "_persist_stop_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "label": "apply_archive_stop_quantities()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L114"}, {"id": "planarchiveloadblock", "label": "PlanArchiveLoadBlock", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "planarchivedeliveryblock", "label": "PlanArchiveDeliveryBlock", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "label": "sync_plan_products_from_stop_archive()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L216"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "label": "sum_delivery_outbound_qty()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L295"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "label": "iter_stop_archive_inventory_lines()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L311"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_rationale_223", "label": "\u5c06\u6bb5\u7ea7\u5f52\u6863\u6570\u91cf\u6c47\u603b\u56de\u5199 pl_plan_product\uff08_row_to_dict \u6743\u5a01\u6765\u6e90\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L223"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "plplanloadproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "plplandeliveryproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "planarchivestopproductitem", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "target": "planarchivestopproductitem", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "plplanloadproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "plplandeliveryproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "planarchivestopproductitem", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "planarchiveloadblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "planarchivedeliveryblock", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L216", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L216", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L153", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L156", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L232", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L296", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_rationale_223", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L223", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L30", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L33", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L76", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L91", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L91", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L91"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "persist_stop_product_brand_qtys", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L100", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "create_dept_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L110"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L124", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L124"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L134", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L138", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L138"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L146", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L148", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L150", "receiver": "load_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L167", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L167", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L167"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L173", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L173", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L178", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L181", "receiver": "delivery_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L183", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L186", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L186"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L194", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L196", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L199", "receiver": "delivery_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L201", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L226", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L226"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L232", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L233", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L235", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L238", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L238", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L238"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L248", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L248"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L265", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L265"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L280", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L289", "receiver": "outbound_by_plan_product"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L298", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L298"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L319", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L319", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L319"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L327", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L329", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L329"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L344", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L344"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L354", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L359", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L359"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L361", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/4281588352403281a021b1f4dbdd1f736eda44691999891dc6e92a5be76fd9b4.json b/backend/graphify-out/cache/ast/v0.9.4/4281588352403281a021b1f4dbdd1f736eda44691999891dc6e92a5be76fd9b4.json new file mode 100644 index 000000000..9474596c0 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/4281588352403281a021b1f4dbdd1f736eda44691999891dc6e92a5be76fd9b4.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": "L89"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "label": "PlanStopProductBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L106"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "label": "PlanStopProductRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L124"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "label": "PlanLoadBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L143"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "label": "PlanDeliveryBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L162"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L182"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "label": "PlanDeliveryRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L193"}, {"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": "L209"}, {"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": "L260"}, {"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": "L267"}, {"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": "L284"}, {"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": "L298"}, {"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": "L350"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "label": "ErpEnteredBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L355"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "label": "PlanDocumentAttachmentItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L360"}, {"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": "L366"}, {"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": "L401"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryprintcustomeroption", "label": "DeliveryPrintCustomerOption", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L443"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "label": "DeliverySlipPrintRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L450"}, {"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": "L463"}, {"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": "L468"}, {"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": "L475"}, {"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": "L487"}, {"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": "L498"}, {"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": "L509"}, {"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": "L534"}, {"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": "L542"}, {"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": "L547"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "label": "PlanArchiveStopProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L558"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "label": "PlanArchiveLoadBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L570"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivedeliveryblock", "label": "PlanArchiveDeliveryBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L576"}, {"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": "L582"}, {"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": "L594"}, {"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": "L602"}, {"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": "L609"}, {"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": "L618"}, {"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": "L631"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "label": "PlanForceFollowStatusBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L636"}, {"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": "L647"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopcontractsupdatebody", "label": "PlanStopContractsUpdateBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L652"}, {"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": "L659"}, {"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": "L680"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_rationale_637", "label": "\u8fd0\u7ef4\u7ea0\u9519\uff1a\u5f3a\u5236\u6539\u8ddf\u8fdb\u72b6\u6001\uff08\u4ec5\u6539\u5b57\u6bb5\uff0c\u4e0d\u8054\u52a8\u4e1a\u52a1\uff09\u3002", "file_type": "rationale", "source_file": "app/schemas/pl/plan.py", "source_location": "L637"}], "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": "L89", "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": "L89", "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_planstopproductbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L106", "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_planstopproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L124", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L124", "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_planloadbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L143", "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_plandeliverybody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L162", "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_planloadread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L182", "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_plandeliveryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L193", "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": "L209", "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": "L209", "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": "L260", "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": "L260", "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": "L267", "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": "L267", "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": "L284", "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": "L284", "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": "L298", "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": "L298", "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": "L350", "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": "L350", "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_erpenteredbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L355", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L355", "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_plandocumentattachmentitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L360", "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": "L366", "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": "L366", "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": "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_planwithproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L401", "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": "L401", "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_deliveryprintcustomeroption", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryprintcustomeroption", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L443", "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_deliveryslipprintread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L450", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L450", "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": "L463", "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": "L463", "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": "L468", "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": "L468", "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": "L475", "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": "L475", "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": "L487", "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": "L487", "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": "L498", "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": "L498", "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": "L509", "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": "L509", "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": "L534", "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": "L534", "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": "L542", "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": "L542", "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": "L547", "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": "L547", "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_planarchivestopproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L558", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L558", "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_planarchiveloadblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L570", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L570", "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_planarchivedeliveryblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L576", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivedeliveryblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L576", "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": "L582", "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": "L582", "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": "L594", "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": "L594", "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": "L602", "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": "L602", "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": "L609", "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": "L609", "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": "L618", "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": "L618", "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": "L631", "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": "L631", "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_planforcefollowstatusbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L636", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L636", "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": "L647", "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": "L647", "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_planstopcontractsupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L652", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopcontractsupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L652", "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": "L659", "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": "L659", "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": "L680", "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": "L680", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_rationale_637", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L637", "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_deliveryprintcustomeroption", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "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_planarchivedeliveryblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "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_plandeliverybody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "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_planforcefollowstatusbody", "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_planloadbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "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_planstopcontractsupdatebody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "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/480b84a1ec36b972a1ba9c95671aec0647873bb69a832428ce79fa5c9277206e.json b/backend/graphify-out/cache/ast/v0.9.4/480b84a1ec36b972a1ba9c95671aec0647873bb69a832428ce79fa5c9277206e.json new file mode 100644 index 000000000..1ad183784 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/480b84a1ec36b972a1ba9c95671aec0647873bb69a832428ce79fa5c9277206e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "label": "pl_brand_archive.py", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "label": "_is_plan_level_row()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L12"}, {"id": "plplanproductbrandqty", "label": "PlPlanProductBrandQty", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "label": "load_brand_qtys_by_plan_product_ids()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "label": "load_brand_qtys_by_stop_product_ids()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "label": "validate_brand_qty_rows()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L93"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "label": "persist_plan_product_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L111"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "label": "persist_stop_product_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L166"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_22", "label": "\u6309\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6 ID \u6279\u91cf\u52a0\u8f7d\u8ba1\u5212\u7ea7\u5f52\u6863\u54c1\u724c\u6570\u91cf\uff08brandId/brandName/qty\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L22"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_61", "label": "\u6309\u88c5\u8d27/\u9001\u8d27\u6bb5\u4ea7\u54c1\u884c ID \u6279\u91cf\u52a0\u8f7d\u6bb5\u7ea7\u5f52\u6863\u54c1\u724c\u6570\u91cf\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L61"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_122", "label": "\u8f6f\u5220\u8ba1\u5212\u7ea7\u65e7\u54c1\u724c\u91cf\u884c\u540e\u6309\u5f52\u6863\u7ed3\u679c\u63d2\u5165\uff1b\u65e0\u54c1\u724c\u7ea6\u5b9a\u5219\u53ea\u8f6f\u5220\u4e0d\u63d2\u5165\u3002\u4e0d\u89e6\u78b0\u6bb5\u7ea7\u884c\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L122"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_179", "label": "\u8f6f\u5220\u8be5\u6bb5\u4ea7\u54c1\u884c\u65e7\u54c1\u724c\u91cf\u540e\u5199\u5165\uff1b\u65e0\u6709\u6548\u6570\u91cf\u5219\u53ea\u8f6f\u5220\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L179"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "target": "plplanproductbrandqty", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L100", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L142", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "plplanproductbrandqty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L148", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L196", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "plplanproductbrandqty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_22", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_61", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L61", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_122", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L122", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_179", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L179", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L13", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "callee": "stop_product_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L13"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L27", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L27", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L27"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L29", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L32", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L33", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L45", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L45", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L66", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L66", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L66"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L68", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L80", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L83", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L83", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L104", "receiver": "r"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L108", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L124", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L124"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L142", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L145", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L145", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L146", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L146", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L147", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L184", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L184"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L196", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L201", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L204", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L204", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L205", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L205", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L206", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L208", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/5e116c34ba0b36e9f156df067b015bcde1700581c86f1cf9a25e9f00de328996.json b/backend/graphify-out/cache/ast/v0.9.4/5e116c34ba0b36e9f156df067b015bcde1700581c86f1cf9a25e9f00de328996.json new file mode 100644 index 000000000..1592c87c1 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/5e116c34ba0b36e9f156df067b015bcde1700581c86f1cf9a25e9f00de328996.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": "L144"}, {"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": "L160"}, {"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": "L164"}, {"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": "L196"}, {"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": "L200"}, {"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": "L225"}, {"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": "L233"}, {"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": "L265"}, {"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": "L270"}, {"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": "L279"}, {"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": "L299"}, {"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": "L313"}, {"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": "L323"}, {"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_format_plan_delivery_date_for_export", "label": "_format_plan_delivery_date_for_export()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L574"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "label": "_load_transports_by_id()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L580"}, {"id": "pltransport", "label": "PlTransport", "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_load_products_by_plan_id", "label": "_load_products_by_plan_id()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L595"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "label": "_build_plan_archive_export_rows()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L614"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "label": "PlanExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L678"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "label": "export_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L701"}, {"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": "L797"}, {"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": "L846"}, {"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_contractgapexportbody", "label": "ContractGapExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L898"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "label": "export_contract_gaps()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L911"}, {"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": "L963"}, {"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": "L993"}, {"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": "L1077"}, {"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": "L1256"}, {"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": "L1370"}, {"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": "L1441"}, {"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": "L1677"}, {"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": "L1709"}, {"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_patch_plan_erp_entered", "label": "patch_plan_erp_entered()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1741"}, {"id": "erpenteredbody", "label": "ErpEnteredBody", "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": "L1776"}, {"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": "L1782"}, {"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": "L1899"}, {"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": "L1923"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "label": "force_plan_follow_status()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1951"}, {"id": "planforcefollowstatusbody", "label": "PlanForceFollowStatusBody", "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_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1986"}, {"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": "L2048"}, {"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": "L2157"}, {"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": "L2188"}, {"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": "L2227"}, {"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": "L2238"}, {"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_print_delivery_slip", "label": "get_print_delivery_slip()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L2261"}, {"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": "L2285"}, {"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": "L2296"}, {"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": "L2319"}, {"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": "L2330"}, {"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": "L2367"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_150", "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": "L150"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_165", "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": "L165"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_201", "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": "L201"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_234", "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": "L234"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_706", "label": "\u5bfc\u51fa\u8ba1\u5212\u5217\u8868\uff08\u5f53\u524d\u7b5b\u9009\u5168\u91cf\uff0c\u6216 ids \u5df2\u9009\uff09\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L706"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1082", "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": "L1082"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1683", "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": "L1683"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1787", "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": "L1787"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1957", "label": "\u5f3a\u5236\u4fee\u6539\u8ddf\u8fdb\u72b6\u6001\uff08\u4ec5\u6539\u5b57\u6bb5\uff0c\u4e0d\u4f5c\u5e9f\u8054\u52a8\u3001\u4e0d\u8865\u8fd0\u8f93\u5b89\u6392\uff09\u3002\u9700\u6743\u9650 pl:plan:force-follow-status\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L1957"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1991", "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": "L1991"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_2267", "label": "\u6309\u9001\u8d27\u5ba2\u6237\u805a\u5408\u9001(\u63d0)\u8d27\u5355\u6253\u5370\u6570\u636e\uff1b\u4e0d\u4f20 customerId \u65f6\u4ec5\u8fd4\u56de\u5ba2\u6237\u9009\u9879\u3002", "file_type": "rationale", "source_file": "app/api/pl/plan.py", "source_location": "L2267"}], "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": "pydantic", "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", "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": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L9", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_menu_guard", "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_services_pl_data_scope", "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_services_pl_plan_arrange_copy_flags", "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_core_tenant_context", "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_utils_excel_export", "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_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L26", "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": "L27", "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": "L28", "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": "L29", "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": "L39", "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": "L40", "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": "L69", "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": "L70", "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": "L71", "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": "L75", "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": "L81", "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": "L82", "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": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_site_link_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L85", "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": "L86", "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": "L87", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_archive_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L91", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_list_attachments", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L96", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_print_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L97", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_customer_stop_pref_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L107", "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": "L108", "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": "L144", "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": "L144", "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": "L160", "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": "L160", "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": "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_generate_plan_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L164", "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": "L164", "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": "L196", "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": "L200", "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": "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_ensure_subpack_slip_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L233", "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": "L233", "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": "L233", "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": "L265", "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": "L270", "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": "L279", "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": "L279", "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": "L299", "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": "L299", "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": "L313", "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": "L323", "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": "L323", "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": "L323", "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": "L323", "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": "L323", "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": "L323", "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_plan_delivery_date_for_export", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L574", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_plan_delivery_date_for_export", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L574", "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_load_transports_by_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L580", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L580", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L580", "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_load_products_by_plan_id", "relation": "contains", "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_load_products_by_plan_id", "target": "session", "relation": "references", "context": "parameter_type", "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_load_products_by_plan_id", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "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_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "target": "plplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L614", "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_planexportbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L678", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L678", "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_export_plans", "relation": "contains", "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_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "relation": "references", "context": "parameter_type", "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_export_plans", "target": "session", "relation": "references", "context": "parameter_type", "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_export_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "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_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": "L797", "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": "L797", "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": "L797", "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": "L846", "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": "L846", "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": "L846", "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": "L846", "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": "L846", "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": "L846", "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_contractgapexportbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L898", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_contractgapexportbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L898", "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_export_contract_gaps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L911", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_contractgapexportbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L911", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L911", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L911", "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": "L963", "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": "L963", "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": "L963", "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": "L963", "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": "L963", "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": "L993", "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": "L993", "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": "L993", "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": "L993", "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": "L993", "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": "L1077", "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": "L1077", "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": "L1077", "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": "L1077", "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": "L1077", "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": "L1256", "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": "L1256", "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": "L1256", "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": "L1256", "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": "L1256", "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": "L1370", "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": "L1370", "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": "L1370", "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": "L1370", "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": "L1441", "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": "L1441", "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": "L1441", "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": "L1441", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1441", "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": "L1677", "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": "L1677", "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": "L1677", "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": "L1677", "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": "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_patch_plan_hazard_cert_ready", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1709", "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": "L1709", "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": "L1709", "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": "L1709", "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": "L1709", "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_erp_entered", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1741", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "erpenteredbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1741", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1741", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1741", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1741", "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": "L1776", "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": "L1782", "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": "L1782", "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": "L1782", "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": "L1782", "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": "L1899", "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": "L1899", "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": "L1899", "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": "L1899", "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": "L1923", "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": "L1923", "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": "L1923", "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": "L1923", "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_force_plan_follow_status", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "planforcefollowstatusbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1951", "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": "L1986", "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": "L1986", "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": "L1986", "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": "L1986", "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": "L2048", "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": "L2048", "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": "L2048", "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": "L2048", "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": "L2048", "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": "L2157", "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": "L2157", "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": "L2157", "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": "L2157", "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": "L2157", "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": "L2188", "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": "L2188", "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": "L2188", "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": "L2188", "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": "L2188", "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": "L2227", "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": "L2227", "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": "L2227", "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": "L2238", "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": "L2238", "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": "L2238", "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": "L2238", "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_print_delivery_slip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2261", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2261", "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": "L2285", "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": "L2285", "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": "L2285", "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": "L2296", "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": "L2296", "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": "L2296", "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": "L2296", "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": "L2319", "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": "L2319", "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": "L2319", "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": "L2330", "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": "L2330", "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": "L2330", "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": "L2330", "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": "L2346", "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": "L2346", "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": "L2346", "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": "L2367", "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": "L2367", "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": "L2367", "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": "L2406", "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": "L2406", "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": "L2406", "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": "L2406", "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": "L209", "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": "L226", "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": "L237", "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": "L258", "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": "L374", "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": "L375", "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": "L494", "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": "L527", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_plan_delivery_date_for_export", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L633", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L723", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L724", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L765", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L767", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L768", "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": "L883", "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": "L1001", "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": "L1006", "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": "L1010", "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": "L1114", "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": "L1121", "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": "L1125", "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": "L1278", "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": "L1281", "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": "L1283", "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": "L1287", "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": "L1337", "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": "L1791", "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": "L1814", "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": "L2083", "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": "L2184", "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": "L2218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_150", "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": "L150", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_165", "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": "L165", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_201", "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": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_234", "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": "L234", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_706", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L706", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1082", "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": "L1082", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1683", "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": "L1683", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1787", "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": "L1787", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1957", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L1957", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_1991", "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": "L1991", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_rationale_2267", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/pl/plan.py", "source_location": "L2267", "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": "L151", "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": "L161", "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": "L166", "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": "L167", "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": "L171", "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": "L172", "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": "L179", "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": "L202", "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": "L206", "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": "L208", "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": "L211", "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": "L213", "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": "L217", "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": "L219", "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": "L227", "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": "L230", "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": "L235", "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": "L237"}, {"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": "L240"}, {"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": "L241"}, {"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": "L243", "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": "L244", "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": "L247", "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": "L250", "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": "L258"}, {"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": "L258"}, {"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": "L261"}, {"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": "L262"}, {"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": "L267", "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": "L276", "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": "L281", "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": "L302", "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": "L302", "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": "L307", "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": "L307", "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": "L307", "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": "L315", "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": "L316", "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": "L317", "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": "L317", "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": "L318", "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": "L318", "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": "L358", "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": "L358", "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": "L359", "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": "L359"}, {"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": "L365", "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": "L367", "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": "L369", "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": "L370", "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": "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": "L371", "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": "L372", "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": "L372", "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": "L373", "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": "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": "L380", "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": "L395", "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": "L395", "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": "L395", "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": "L398", "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": "L403", "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": "L414", "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": "L416", "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": "L416", "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": "L417", "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": "L422", "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": "L422"}, {"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": "L425", "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": "L429", "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": "L429", "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": "L429", "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": "L429", "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": "L436", "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": "L436", "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": "L436"}, {"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": "L438", "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": "L445", "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": "L445", "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": "L448", "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": "L453", "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": "L458", "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": "L463", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_arrange_copy_flags", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L464", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_document_attachments_by_plan_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L465", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L470", "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": "L475", "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": "L476", "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": "L482", "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": "L483", "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": "L485", "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": "L489", "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": "L501", "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": "L503", "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": "L505", "receiver": "contracts_by_plan"}, {"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": "L508", "receiver": "arrange_copy_flags"}, {"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": "L513", "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": "L519", "receiver": "document_attachments_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L520", "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": "L523", "receiver": "stops_by_plan"}, {"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": "L525", "receiver": "result_list"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "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": "L584"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L588", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L599", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L599", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "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": "L599"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L603", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L610", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_products_by_plan_id", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L610", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L622", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L623", "receiver": "transports_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L625", "receiver": "PLAN_ARCHIVE_FREIGHT_TYPE_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L660", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_build_plan_archive_export_rows", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L674", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L708", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L708", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L709", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L709"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L714", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L716", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L718", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L719", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L720", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L720", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L721", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L721", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L722", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L722", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L728", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "contains", "is_member_call": true, "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_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L738", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "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_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L740", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L744", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L752", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L753", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L753", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L754", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L758", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L759", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L759"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "limit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L760", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L760", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L760", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L761", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L761", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L762", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L762", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "PLAN_ARCHIVE_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L769"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L775", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L775", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L776", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L778", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L780", "receiver": "items"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "filter_export_columns", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L781", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "PLAN_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L781"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L784", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L793", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L793"}, {"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": "L804", "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": "L804", "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": "L805", "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": "L805", "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": "L805", "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": "L811", "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": "L811", "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": "L815", "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": "L818", "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": "L818", "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": "L818"}, {"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": "L822", "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": "L823"}, {"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": "L822", "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": "L827", "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": "L832", "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": "L832"}, {"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": "L838", "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": "L840", "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": "L869", "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": "L869", "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": "L870", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L917", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L917", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_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": "L918", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "EXPORT_MAX_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L923"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "EXPORT_MAX_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L931"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L937", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L938", "receiver": "plan_type_labels"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L938", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L938", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L939", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L948", "receiver": "data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L951", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "filter_export_columns", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L952", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "CONTRACT_GAP_EXPORT_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "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_export_contract_gaps", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L953", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L953", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "export_rows_to_xlsx_response", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L954", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L959", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_contract_gaps", "callee": "e", "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_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": "L971", "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": "L971", "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": "L972", "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": "L973", "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": "L983", "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": "L998", "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": "L998", "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": "L1004", "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": "L1007", "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": "L1053", "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": "L1058", "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": "L1067", "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": "L1069", "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": "L1071", "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": "L1072", "receiver": "db"}, {"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": "L1083", "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": "L1083", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "uses_multi_stop_payload", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1084", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "validate_plan_stops_write", "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_create_plan_full", "callee": "collect_stop_qty_warnings", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1095", "receiver": null}, {"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": "L1099", "receiver": null}, {"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": "L1100", "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": "L1117", "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": "L1119", "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": "L1122", "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": "L1163", "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": "L1170", "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": "L1171", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "sync_plan_legacy_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1174", "receiver": null}, {"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": "L1178", "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": "L1183", "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": "L1184", "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": "L1193", "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": "L1194", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "replace_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1197", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "safe_upsert_prefs_from_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1207", "receiver": null}, {"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": "L1216", "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": "L1227", "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": "L1237", "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": "L1238", "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": "L1240", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1245", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1245", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_create_plan_full", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1246", "receiver": null}, {"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": "L1264", "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": "L1264", "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": "L1268", "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": "L1268", "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": "L1268"}, {"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": "L1273", "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": "L1275", "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": "L1284", "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": "L1298", "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": "L1301", "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": "L1303", "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": "L1318", "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": "L1322", "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": "L1322"}, {"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": "L1332", "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": "L1338", "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": "L1357", "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": "L1359", "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": "L1360", "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": "L1375", "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": "L1375", "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": "L1376", "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": "L1376"}, {"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": "L1379", "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": "L1379", "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": "L1379"}, {"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": "L1388", "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": "L1393", "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": "L1401", "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": "L1405"}, {"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": "L1407", "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": "L1407"}, {"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": "L1408", "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": "L1410", "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": "L1410"}, {"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": "L1414", "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": "L1416"}, {"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": "L1417"}, {"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": "L1418"}, {"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": "L1421", "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": "L1421"}, {"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": "L1423", "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": "L1424"}, {"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": "L1425", "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": "L1427"}, {"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": "L1425", "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": "L1426"}, {"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": "L1428"}, {"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": "L1429"}, {"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": "L1430", "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": "L1430"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1430", "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": "L1430"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "attach_plan_stops_to_item", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1431", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "result", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1431"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan", "callee": "stops", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1431"}, {"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": "L1432"}, {"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": "L1447", "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": "L1447", "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": "L1448", "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": "L1451", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "uses_multi_stop_payload", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1453", "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": "L1459", "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": "L1471", "receiver": "update_data"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "validate_plan_stops_write", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1489", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "collect_stop_qty_warnings", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1497", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "sync_plan_legacy_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1498", "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": "L1505", "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": "L1505", "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": "L1510", "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": "L1510", "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": "L1520", "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": "L1531", "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": "L1541", "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": "L1541", "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": "L1550", "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": "L1550"}, {"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": "L1557", "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": "L1567", "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": "L1567", "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": "L1567"}, {"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": "L1574", "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": "L1582", "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": "L1587", "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": "L1596", "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": "L1605", "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": "L1606", "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": "L1608", "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": "L1610", "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": "L1612", "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": "L1615", "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": "L1615"}, {"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": "L1626", "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": "L1636", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "replace_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1644", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "safe_upsert_prefs_from_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1654", "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": "L1664", "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": "L1665", "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": "L1666", "receiver": "PlanWithProducts"}, {"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": "L1671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1671", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_update_plan", "callee": "attach_plan_stops_to_item", "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_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": "L1684", "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": "L1684", "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": "L1685", "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": "L1686", "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": "L1693", "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": "L1695", "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": "L1695", "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": "L1695"}, {"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": "L1703", "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": "L1716", "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": "L1716", "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": "L1717", "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": "L1718", "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": "L1725", "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": "L1727", "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": "L1727", "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": "L1727"}, {"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": "L1735", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1748", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "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": "L1748", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "set_plan_erp_entered", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1749", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1756", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1758", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1758", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "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": "L1758"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1766", "receiver": "PlanWithProducts"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_patch_plan_erp_entered", "callee": "get", "is_member_call": true, "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_patch_plan_erp_entered", "callee": "load_plan_document_attachments_by_plan_ids", "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_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": "L1777", "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": "L1788", "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": "L1788", "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": "L1789", "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": "L1802", "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": "L1802", "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": "L1802"}, {"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": "L1813", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "plan_requires_site_link", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1815", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_arrange_info", "callee": "build_site_records_for_arranged_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1816", "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": "L1824", "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": "L1824"}, {"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": "L1837", "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": "L1837", "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": "L1837"}, {"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": "L1845", "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": "L1845", "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": "L1845"}, {"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": "L1853", "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": "L1854", "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": "L1868", "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": "L1873", "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": "L1874", "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": "L1879", "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": "L1905", "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": "L1905", "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": "L1906", "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": "L1909", "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": "L1911", "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": "L1913", "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": "L1917", "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": "L1918", "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": "L1929", "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": "L1929", "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": "L1930", "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": "L1933", "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": "L1935", "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": "L1939", "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": "L1940", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "get_user_menu_codes", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1959", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1961", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1963", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1965", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1970", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "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": "L1970", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1971", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1975", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1976", "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": "L1992", "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": "L1992", "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": "L1993", "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": "L1996", "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": "L1999", "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": "L2003", "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": "L2003", "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": "L2003"}, {"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": "L2013", "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": "L2020", "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": "L2020"}, {"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": "L2021", "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": "L2030", "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": "L2037", "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": "L2038", "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": "L2054", "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": "L2054", "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": "L2055", "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": "L2058", "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": "L2064", "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": "L2064", "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": "L2064"}, {"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": "L2073", "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": "L2077", "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": "L2082", "receiver": "db"}, {"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": "L2088", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_stop_quantities", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2089", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "sync_plan_products_from_stop_archive", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2097", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_brand_qtys_only", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2101", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_archive_plan", "callee": "apply_archive_inventory_for_plan_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2108", "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": "L2117", "receiver": null}, {"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": "L2118", "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": "L2121", "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": "L2129", "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": "L2134", "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": "L2142", "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": "L2152", "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": "L2163", "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": "L2163", "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": "L2164", "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": "L2165", "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": "L2172", "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": "L2183", "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": "L2195", "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": "L2195", "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": "L2196", "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": "L2197", "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": "L2205", "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": "L2206", "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": "L2217", "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": "L2232", "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": "L2232", "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": "L2233", "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": "L2244", "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": "L2244", "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": "L2245", "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": "L2247", "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": "L2249", "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": "L2252", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2268", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "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": "L2268", "receiver": "user"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2269", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "get_delivery_slip_print_context", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2272", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2281", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_print_delivery_slip", "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": "L2281"}, {"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": "L2290", "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": "L2290", "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": "L2291", "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": "L2302", "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": "L2302", "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": "L2303", "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": "L2305", "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": "L2307", "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": "L2310", "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": "L2324", "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": "L2324", "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": "L2325", "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": "L2336", "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": "L2336", "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": "L2337", "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": "L2339", "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": "L2342", "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": "L2351", "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": "L2351", "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": "L2352", "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": "L2354", "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": "L2357", "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": "L2372", "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": "L2372", "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": "L2373", "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": "L2376", "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": "L2378", "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": "L2380", "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": "L2382", "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": "L2382", "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": "L2386", "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": "L2386", "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": "L2386"}, {"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": "L2392", "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": "L2392", "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": "L2392"}, {"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": "L2398", "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": "L2408", "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": "L2408", "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": "L2408"}, {"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": "L2417", "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": "L2418", "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": "L2418"}], "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_build_plan_archive_export_rows", "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_contractgapexportbody", "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_export_contract_gaps", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_force_plan_follow_status", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_plan_delivery_date_for_export", "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_print_delivery_slip", "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_load_products_by_plan_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_load_transports_by_id", "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_erp_entered", "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_planexportbody", "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/72065d1ab31933bf7e384601e06acbacb5457d521f38f951e52b2aff6c36eec9.json b/backend/graphify-out/cache/ast/v0.9.4/72065d1ab31933bf7e384601e06acbacb5457d521f38f951e52b2aff6c36eec9.json new file mode 100644 index 000000000..11a6814e8 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/72065d1ab31933bf7e384601e06acbacb5457d521f38f951e52b2aff6c36eec9.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": "L89"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "label": "PlanStopProductBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L106"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "label": "PlanStopProductRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L124"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "label": "PlanLoadBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L143"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "label": "PlanDeliveryBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L162"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L182"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "label": "PlanDeliveryRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L193"}, {"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": "L209"}, {"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": "L260"}, {"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": "L267"}, {"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": "L284"}, {"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": "L298"}, {"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": "L350"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "label": "ErpEnteredBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L355"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "label": "PlanDocumentAttachmentItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L360"}, {"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": "L366"}, {"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": "L401"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryprintcustomeroption", "label": "DeliveryPrintCustomerOption", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L443"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "label": "DeliverySlipPrintRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L450"}, {"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": "L463"}, {"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": "L468"}, {"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": "L475"}, {"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": "L487"}, {"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": "L498"}, {"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": "L509"}, {"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": "L534"}, {"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": "L542"}, {"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": "L547"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "label": "PlanArchiveStopProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L558"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "label": "PlanArchiveLoadBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L570"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivedeliveryblock", "label": "PlanArchiveDeliveryBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L576"}, {"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": "L582"}, {"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": "L594"}, {"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": "L602"}, {"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": "L609"}, {"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": "L618"}, {"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": "L631"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "label": "PlanForceFollowStatusBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L636"}, {"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": "L647"}, {"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": "L652"}, {"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": "L671"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_rationale_637", "label": "\u8fd0\u7ef4\u7ea0\u9519\uff1a\u5f3a\u5236\u6539\u8ddf\u8fdb\u72b6\u6001\uff08\u4ec5\u6539\u5b57\u6bb5\uff0c\u4e0d\u8054\u52a8\u4e1a\u52a1\uff09\u3002", "file_type": "rationale", "source_file": "app/schemas/pl/plan.py", "source_location": "L637"}], "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": "L89", "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": "L89", "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_planstopproductbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L106", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L106", "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_planstopproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L124", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L124", "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_planloadbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L143", "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_plandeliverybody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L162", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L162", "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_planloadread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L182", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L182", "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_plandeliveryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L193", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L193", "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": "L209", "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": "L209", "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": "L260", "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": "L260", "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": "L267", "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": "L267", "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": "L284", "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": "L284", "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": "L298", "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": "L298", "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": "L350", "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": "L350", "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_erpenteredbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L355", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L355", "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_plandocumentattachmentitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L360", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L360", "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": "L366", "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": "L366", "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": "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_planwithproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L401", "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": "L401", "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_deliveryprintcustomeroption", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L443", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryprintcustomeroption", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L443", "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_deliveryslipprintread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L450", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L450", "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": "L463", "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": "L463", "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": "L468", "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": "L468", "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": "L475", "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": "L475", "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": "L487", "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": "L487", "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": "L498", "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": "L498", "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": "L509", "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": "L509", "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": "L534", "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": "L534", "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": "L542", "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": "L542", "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": "L547", "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": "L547", "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_planarchivestopproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L558", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L558", "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_planarchiveloadblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L570", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L570", "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_planarchivedeliveryblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L576", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivedeliveryblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L576", "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": "L582", "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": "L582", "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": "L594", "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": "L594", "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": "L602", "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": "L602", "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": "L609", "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": "L609", "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": "L618", "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": "L618", "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": "L631", "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": "L631", "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_planforcefollowstatusbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L636", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L636", "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": "L647", "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": "L647", "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": "L652", "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": "L652", "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": "L671", "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": "L671", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_rationale_637", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L637", "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_deliveryprintcustomeroption", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "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_planarchivedeliveryblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "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_plandeliverybody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "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_planforcefollowstatusbody", "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_planloadbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "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_planstopproductbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "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/76e84119a6e46d7875d4f79f821b0063315f354305e2279cb5721bc4fa82adda.json b/backend/graphify-out/cache/ast/v0.9.4/76e84119a6e46d7875d4f79f821b0063315f354305e2279cb5721bc4fa82adda.json new file mode 100644 index 000000000..47aec9f63 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/76e84119a6e46d7875d4f79f821b0063315f354305e2279cb5721bc4fa82adda.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "label": "pl_models.py", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "label": "PlCarrier", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L28"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L57"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "label": "PlPersonnel", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L84"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "label": "PlTransportAddress", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L119"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "label": "PlCustomerStopPref", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L143"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "label": "PlCert", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L168"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "label": "PlDriver", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L194"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "label": "PlVehiclePersonnel", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L220"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "label": "PlVehicleDriver", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L241"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "label": "PlPlan", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L266"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "label": "PlPlanContract", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L375"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L398"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "label": "PlPlanProductBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L457"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "label": "PlPlanChange", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L485"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "label": "PlPlanLoad", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L507"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "label": "PlPlanLoadProduct", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L535"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "label": "PlPlanDelivery", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L566"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "label": "PlPlanDeliveryProduct", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L595"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "label": "PlTransport", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L631"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "label": "PlTransportProductFeedback", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L694"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "label": "PlTransportProductBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L715"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "label": "PlTransportDbLink", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L738"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "label": "PlPlanTransport", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L763"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "label": "PlTransportDriverStopFeedback", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L782"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "label": "PlTransportSiteStopFeedback", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L810"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "label": "PlTransportSiteLink", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L840"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "label": "PlInboundOrder", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L873"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "label": "PlInboundOrderItem", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L903"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "label": "PlInboundOrderItemBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L929"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "label": "PlOutboundOrder", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L952"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "label": "PlOutboundOrderItem", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L982"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "label": "PlOutboundOrderItemBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1008"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "label": "PlTransportApproval", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1031"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1060"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "label": "PlFreightSettlementApproval", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1092"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "label": "PlFreightSettlementTransport", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1119"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "label": "PlRemittanceVoucher", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "label": "PlInventory", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1166"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "label": "PlInventoryTransaction", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1200"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "label": "PlInventoryWarning", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1231"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "label": "PlDocumentReminder", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1258"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "label": "PlVehicleRechargeApply", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1286"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "label": "PlVehicleMaintenanceApply", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1311"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "label": "PlVehicleMaintenanceProcess", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1339"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "label": "PlVehicleUreaApply", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1363"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "label": "PlVehicleUreaDisburse", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1390"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "label": "PlOcrUsageMonth", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1414"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "label": "PlVehicleRechargeRecord", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1433"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_120", "label": "\u8fd0\u8f93\u901a\u7528\u5730\u5740\u5e93 pl_transport_address", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L120"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_144", "label": "\u5ba2\u6237\u88c5/\u9001\u8d27\u7269\u6d41\u9ed8\u8ba4\u8bb0\u5fc6 pl_customer_stop_pref", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L144"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_195", "label": "\u53f8\u673a\u8868 pl_driver\uff08\u517c\u5bb9\u65e7\u8868\uff0c\u8fc1\u79fb\u540e\u9010\u6b65\u5e9f\u5f03\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L195"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_221", "label": "\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u8868 pl_vehicle_personnel", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L221"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_242", "label": "\u8f66\u8f86-\u53f8\u673a\u5173\u8054\u8868 pl_vehicle_driver\uff08\u517c\u5bb9\u65e7\u8868\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L242"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_376", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5408\u540c\u5173\u8054\uff08\u5206\u4fa7\u591a\u9009\uff09 pl_plan_contract", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L376"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_399", "label": "\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6\u8868 pl_plan_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L399"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_458", "label": "\u8ba1\u5212\u4ea7\u54c1\u5f52\u6863\u54c1\u724c\u6570\u91cf pl_plan_product_brand_qty stop_product_id \u4e3a\u7a7a\uff1a\u8ba1\u5212\u4ea7\u54c1\u7ea7\u6c47\u603b\uff1b\u975e\u7a7a\uff1a\u88c5\u8d27/\u9001\u8d27\u6bb5\u4ea7\u54c1", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L458"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_486", "label": "\u8ba1\u5212\u53d8\u66f4\u8bb0\u5f55\u8868 pl_plan_change", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L486"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_508", "label": "\u8fd0\u8f93\u8ba1\u5212-\u88c5\u8d27\u6bb5 pl_plan_load\uff08plan 1:1\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L508"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_536", "label": "\u8fd0\u8f93\u8ba1\u5212-\u88c5\u8d27\u6bb5\u4ea7\u54c1\u660e\u7ec6 pl_plan_load_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L536"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_567", "label": "\u8fd0\u8f93\u8ba1\u5212-\u9001\u8d27\u6bb5 pl_plan_delivery\uff08plan 1:N\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L567"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_596", "label": "\u8fd0\u8f93\u8ba1\u5212-\u9001\u8d27\u6bb5\u4ea7\u54c1\u660e\u7ec6 pl_plan_delivery_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L596"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_695", "label": "\u8fd0\u8f93\u5355\u6309\u4ea7\u54c1\u56de\u4f20 pl_transport_product_feedback", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L695"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_716", "label": "\u8fd0\u8f93\u5355\u4ea7\u54c1\u56de\u4f20\u54c1\u724c\u6570\u91cf pl_transport_product_brand_qty", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L716"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_739", "label": "\u8fd0\u8f93-\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054 pl_transport_db_link", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L739"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_764", "label": "\u8ba1\u5212-\u8fd0\u8f93\u5173\u8054\u8868 pl_plan_transport", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L764"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_783", "label": "\u8fd0\u8f93\u5355-\u53f8\u673a\u6309\u6bb5\u9644\u4ef6\u56de\u4f20 pl_transport_driver_stop_feedback", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L783"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_811", "label": "\u8fd0\u8f93\u5355-\u73b0\u573a\u6309\u6bb5\u56de\u4f20 pl_transport_site_stop_feedback", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L811"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_841", "label": "\u8fd0\u8f93\u8ba1\u5212\u73b0\u573a\u94fe\u63a5 pl_transport_site_link\uff08\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5355\u89e3\u8026\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L841"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_874", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355 pl_inbound_order", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L874"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_904", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355\u660e\u7ec6 pl_inbound_order_item", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L904"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_930", "label": "\u5165\u5e93\u660e\u7ec6\u54c1\u724c\u6570\u91cf pl_inbound_order_item_brand_qty", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L930"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_953", "label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355 pl_outbound_order", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L953"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_983", "label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355\u660e\u7ec6 pl_outbound_order_item", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L983"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1009", "label": "\u51fa\u5e93\u660e\u7ec6\u54c1\u724c\u6570\u91cf pl_outbound_order_item_brand_qty", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1009"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1032", "label": "\u8fd0\u8f93\u5ba1\u6279\u8bb0\u5f55\u8868 pl_transport_approval", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1032"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1061", "label": "\u8fd0\u8d39\u7ed3\u7b97\u8868 pl_freight_settlement", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1061"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1093", "label": "\u8fd0\u8d39\u7ed3\u7b97\u5ba1\u6279 pl_freight_settlement_approval", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1093"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1120", "label": "\u7ed3\u7b97\u5355-\u8fd0\u8f93\u5173\u8054\u8868 pl_freight_settlement_transport", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1120"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1140", "label": "\u6c47\u6b3e\u51ed\u8bc1\u8868 pl_remittance_voucher", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1140"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1201", "label": "\u5e93\u5b58\u6d41\u6c34\u8868 pl_inventory_transaction", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1201"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1232", "label": "\u5e93\u5b58\u9884\u8b66\u8868 pl_inventory_warning", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1232"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1259", "label": "\u8bc1\u4ef6\u5230\u671f\u63d0\u9192\u8868 pl_document_reminder", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1259"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1287", "label": "\u8f66\u8f86ETC/\u52a0\u6cb9\u5145\u503c\u7533\u8bf7 pl_vehicle_recharge_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1287"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1312", "label": "\u8f66\u8f86\u7ef4\u4fdd\u7533\u8bf7 pl_vehicle_maintenance_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1312"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1340", "label": "\u8f66\u8f86\u7ef4\u4fdd\u5904\u7406\u767b\u8bb0 pl_vehicle_maintenance_process", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1340"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1364", "label": "\u8f66\u8f86\u5c3f\u7d20\u7533\u8bf7 pl_vehicle_urea_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1364"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1391", "label": "\u8f66\u8f86\u5c3f\u7d20\u53d1\u653e\u767b\u8bb0 pl_vehicle_urea_disburse", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1391"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1415", "label": "\u963f\u91cc\u4e91 OCR \u6708\u5ea6\u8c03\u7528\u8ba1\u6570 pl_ocr_usage_month\uff08\u6309\u81ea\u7136\u6708\u5168\u5c40\u7edf\u8ba1\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1415"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1434", "label": "\u8f66\u8f86ETC/\u52a0\u6cb9\u5145\u503c\u53d1\u653e\u767b\u8bb0 pl_vehicle_recharge_record", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1434"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L398", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L398", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L457", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L457", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L485", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L485", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L507", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L507", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L535", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L535", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L566", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L566", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L595", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L595", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L631", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L631", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L694", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L694", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L763", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L763", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L782", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L782", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L810", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L810", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L840", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L840", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L873", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L873", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L903", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L903", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L929", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L929", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L982", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L982", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1008", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1008", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1060", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1060", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1231", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1231", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1258", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1258", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1286", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1286", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1414", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1414", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1433", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1433", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_120", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_144", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L144", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_195", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_221", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_242", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L242", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_376", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L376", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_399", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L399", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_458", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L458", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_486", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L486", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_508", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L508", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_536", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L536", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_567", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L567", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_596", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L596", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_695", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_716", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L716", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_739", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L739", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_764", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L764", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_783", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L783", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_811", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L811", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_841", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L841", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_874", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L874", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_904", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L904", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_930", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L930", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_953", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L953", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_983", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L983", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1009", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1009", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1032", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1032", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1061", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1061", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1093", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1093", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1120", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1140", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1140", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1201", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1232", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1232", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1259", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1287", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1287", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1312", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1312", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1340", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1340", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1364", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1364", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1391", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1391", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1415", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1415", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1434", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1434", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/85ff17cb10f85bf67e6dffaacfd9ef71d7d09036a4185f44ae93ca4c76aaabdf.json b/backend/graphify-out/cache/ast/v0.9.4/85ff17cb10f85bf67e6dffaacfd9ef71d7d09036a4185f44ae93ca4c76aaabdf.json new file mode 100644 index 000000000..ea6dbc595 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/85ff17cb10f85bf67e6dffaacfd9ef71d7d09036a4185f44ae93ca4c76aaabdf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "label": "pl_plan_service.py", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_determine_plan_type", "label": "determine_plan_type()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L48"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_ton_product_unit", "label": "is_ton_product_unit()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L56"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "label": "_product_quantity()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L63"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "label": "_product_create_actual_qty()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L73"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "label": "_plan_product_actual_qty()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L79"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "label": "sum_product_actual_quantities()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L85"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "label": "sum_plan_product_actual_quantities()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L89"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_estimate_qty_fields", "label": "_estimate_qty_fields()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L93"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "label": "build_plan_product()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L104"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "label": "_apply_vehicle_snapshot_to_plan_transport()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L154"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "label": "_resolve_driver()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L172"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "label": "_calc_freight_amount()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L218"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "label": "fetch_hazard_flags_map()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L239"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "label": "resolve_hazard_flags_from_crm()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L265"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "label": "plan_has_hazard_products()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "label": "_cert_url_blank()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L301"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "label": "plan_has_hazard_product_exists()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L306"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "label": "plan_has_incomplete_hazard_cert_exists()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L328"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "label": "collect_hazard_product_ids()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L361"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_hazard_cert_ready", "label": "clear_hazard_cert_ready()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L386"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_required_hazard_cert_fields", "label": "_required_hazard_cert_fields()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L392"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "label": "_is_hazard_product_cert_complete()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L401"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "label": "all_hazard_products_cert_complete()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L413"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "label": "maybe_auto_set_hazard_cert_ready()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L446"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "label": "validate_hazard_cert_ready_for_transport()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L464"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "label": "set_hazard_cert_ready()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L482"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "label": "set_plan_erp_entered()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L532"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "label": "update_plan_product_certs()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L561"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L637"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "label": "_resolve_transport_context()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L655"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "label": "_apply_payload_to_transport_row()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L721"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "label": "upsert_draft_transport_for_plan()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L758"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "label": "clear_draft_transport_for_plan()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L881"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "label": "sync_transport_prefill_for_plan()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L922"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "label": "apply_vehicle_prefill_to_plan()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L944"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "label": "create_transport_for_plan()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L966"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "label": "assert_contract_selectable_for_plan()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1084"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "label": "_normalize_contract_links()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1112"}, {"id": "plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "label": "validate_plan_party_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "label": "replace_plan_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1179"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "label": "load_plan_contracts_grouped()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1226"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "label": "validate_create_full()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1260"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_plan_total_amount", "label": "calc_plan_total_amount()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1284"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "label": "transport_has_locked_freight_settlement()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1295"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "label": "sync_archive_qty_from_io_order()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1319"}, {"id": "planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "label": "apply_archive_product_quantities()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1378"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "label": "apply_archive_brand_qtys_only()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1464"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "label": "apply_archive_freight()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1518"}, {"id": "planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "label": "record_plan_change()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1631"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "label": "apply_plan_driver_feedback()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1657"}, {"id": "plandriverfeedbackupdatebody", "label": "PlanDriverFeedbackUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "label": "apply_plan_site_feedback()", "file_type": "code", "source_file": "app/services/pl_plan_service.py", "source_location": "L1715"}, {"id": "plansitefeedbackupdatebody", "label": "PlanSiteFeedbackUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "pltransportsitelink", "label": "PlTransportSiteLink", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_178", "label": "\u89e3\u6790\u53f8\u673a\uff1a\u663e\u5f0f\u9009\u62e9\u4f18\u5148\uff0c\u5426\u5219\u53d6\u8f66\u8f86\u5173\u8054\u53f8\u673a\uff1b\u5747\u65e0\u5219\u5141\u8bb8\u4e3a\u7a7a\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L178"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_244", "label": "\u6279\u91cf\u4ece CRM \u4ea7\u54c1\u4e3b\u6570\u636e\u8bfb\u53d6\u6613\u5236\u6bd2/\u6613\u5236\u7206\u6807\u8bc6\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L244"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_272", "label": "\u4ece CRM \u4ea7\u54c1\u4e3b\u6570\u636e\u8bfb\u53d6\u6613\u5236\u6bd2/\u6613\u5236\u7206\u6807\u8bc6\uff08\u4e0d\u8bfb\u8ba1\u5212\u4ea7\u54c1\u5feb\u7167\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L272"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_302", "label": "\u8bc1\u4e66 URL \u4e3a\u7a7a\uff08NULL / \u7a7a\u4e32 / \u7eaf\u7a7a\u767d\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L302"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_307", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u8ba1\u5212\u4e0b\u5b58\u5728 CRM \u6807\u8bc6\u4e3a\u6613\u5236\u6bd2/\u6613\u5236\u7206\u7684\u4ea7\u54c1\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L307"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_329", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u5b58\u5728\u5371\u5316\u4ea7\u54c1\u4e14\u81f3\u5c11\u4e00\u5f20\u5fc5\u9700\u8bc1\u4e66\u672a\u4e0a\u4f20\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L329"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_418", "label": "\u8ba1\u5212\u5185\u6240\u6709\u5371\u5316\u54c1\u4ea7\u54c1\u7684\u6240\u9700\u8bc1\u4e66\u69fd\u4f4d\u5747\u5df2\u4e0a\u4f20\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L418"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_454", "label": "\u5168\u90e8\u5371\u5316\u54c1\u8bc1\u4e66\u5df2\u4e0a\u4f20\u65f6\uff0c\u81ea\u52a8\u6807\u8bb0\u8bc1\u4e66\u9f50\u5907\uff08\u4e0e\u4eba\u5de5\u786e\u8ba4\u7b49\u6548\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L454"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_768", "label": "\u5199\u5165/\u66f4\u65b0\u8349\u7a3f\u8fd0\u8f93\u5355\uff08pl_transport + pl_plan_transport\uff09\uff0c\u8ba1\u5212\u4fdd\u6301\u5f85\u5b89\u6392\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L768"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_932", "label": "\u540c\u6b65\u8fd0\u8f93\u9884\u9009\u5230\u8349\u7a3f\u8fd0\u8f93\u5b50\u8868\uff08pl_transport\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L932"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_1326", "label": "\u82e5\u5b58\u5728\u5165\u5e93/\u51fa\u5e93\u5355\uff0c\u7528\u660e\u7ec6 actual_qty \u8986\u76d6\u5f52\u6863\u63d0\u4ea4\u4e2d\u7684\u5b9e\u9645\u6570\u91cf\uff08\u6743\u5a01\u6765\u6e90\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L1326"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_1472", "label": "\u4e00\u8f66\u591a\u5378\uff1a\u6bb5\u7ea7\u6570\u91cf\u5df2\u5199\u5165\uff0c\u6b64\u5904\u4ec5\u5904\u7406\u8ba1\u5212\u4ea7\u54c1\u54c1\u724c\u5206\u91cf\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_service.py", "source_location": "L1472"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_services_pl_feedback_brand_qty", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_services_pl_freight_settlement_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_services_pl_transport_resource_snapshot_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L48", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_ton_product_unit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L73", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L73", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L73", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_estimate_qty_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_estimate_qty_fields", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L104", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L154", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L172", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L239", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L265", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L265", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L301", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L306", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L328", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L361", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_hazard_cert_ready", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L386", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_hazard_cert_ready", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L386", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_required_hazard_cert_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L392", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L401", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L401", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L482", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L482", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "target": "plplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L482", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L532", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L532", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "target": "plplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L532", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L561", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L637", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L637", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "plvehicle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L758", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L758", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L758", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L758", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L758", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L881", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L881", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L881", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L922", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L922", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L922", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L922", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L922", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L944", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L966", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L966", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L966", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L966", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L966", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L966", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1084", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1084", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1128", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1260", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1260", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_plan_total_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_plan_total_amount", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1284", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1295", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1319", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1378", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1464", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "target": "planarchivefreightblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1518", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1631", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1631", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1657", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1657", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1657", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "target": "plandriverfeedbackupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1657", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1657", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "target": "plansitefeedbackupdatebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "target": "pltransportsitelink", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L86", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L90", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L114", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_estimate_qty_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L115", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L133", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L226", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L298", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L333", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L369", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_required_hazard_cert_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L407", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L421", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L437", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L457", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L474", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L515", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_hazard_cert_ready", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L524", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L592", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L612", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L623", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L684", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L698", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L707", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L799", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L816", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L817", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L860", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L874", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L933", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L955", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L989", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L991", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1006", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1016", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1019", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1064", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1147", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1152", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1160", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1248", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1274", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1276", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1352", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "target": "planarchiveproductitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1388", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1402", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1487", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1533", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1536", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1614", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_178", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L178", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_244", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L244", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_272", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L272", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_302", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L302", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_307", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L307", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_329", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L329", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_418", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L418", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_454", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L454", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_768", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_932", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L932", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_1326", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1326", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_rationale_1472", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_service.py", "source_location": "L1472", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_ton_product_unit", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "callee": "build_transport_resource_snapshot", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "callee": "apply_resource_snapshot_json", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L181", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "PlPersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L181"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L193", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "PlVehiclePersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L193"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L200", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L200", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L205", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "callee": "PlPersonnel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L205"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L251", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L253", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276", "receiver": "hazard_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L280", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L280", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L280"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L303", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "callee": "nullif", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L303", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "callee": "trim", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L303", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L303", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L308", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L312"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "select_from", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L310"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L309", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L313", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L323", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L330", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L332", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L337", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L341", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "CrmProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L345"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "select_from", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L343"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L342", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L346", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L356", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "callee": "product_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L366"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "callee": "frozenset", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L368", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "callee": "product_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L372"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L382", "receiver": "hazard_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "callee": "frozenset", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L383", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_required_hazard_cert_fields", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L395", "receiver": "fields"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_required_hazard_cert_fields", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L397", "receiver": "fields"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L408", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L461", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L476", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L491", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L491", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L491"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L500", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L502", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L504", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L507", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L507"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L519", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L522", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L527", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L528", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L541", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L541", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L541"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L550", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L552", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L556", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L570", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L570", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "PlPlan", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L570"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L581", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L584", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L584"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L601", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L601"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L611", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L616", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L617", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L621", "receiver": "updated"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "commit", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L631", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "callee": "refresh", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L633", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L638", "receiver": "date"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L639", "receiver": "now"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L641", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L641", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L641", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L641"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L642", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L643", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L673", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L673", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "PlVehicle", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L673"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L682", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L691", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L691", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "callee": "PlCarrier", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L691"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L789", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L789", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L789"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L818", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L827", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L828", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L829", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L830", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L831", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "sync_draft_settlement_freight_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L870", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L892", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L892", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L892"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L903", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L903", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L903"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "callee": "clear_resource_snapshot", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L916", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L978", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L978", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "PlVehicle", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L978"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L987", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L999", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L999", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "PlCarrier", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L999"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "generate_transport_no", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1018", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1020", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1045", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1047", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1048", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1049", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1095", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1095", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "callee": "CrmContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1095"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1108", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1120", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1123", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1124", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1141", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1142", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1143", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1145", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1159", "receiver": "resolved_supplier"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1172", "receiver": "resolved_demander"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1189", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1190", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1190", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "PlPlanContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1190"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_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_service.py", "source_location": "L1200"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_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_service.py", "source_location": "L1201"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1207", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "PlPlanContract", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1208", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1209", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1234", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "PlPlanContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1234"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1237", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1247", "receiver": "buckets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1254", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1256", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1257", "receiver": "buckets"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1261", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1261", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1262", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1263", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1263", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1264", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1266", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1275", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1278", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1281", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1301", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1301", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "PlFreightSettlement", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1303"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1301", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1312", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "_LOCKED_SETTLEMENT_STATUSES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1312"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1334", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1334", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1334", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1341", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1347", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1360", "receiver": "qty_by_plan_product"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1362", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1374", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1391", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1391"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1398", "receiver": "product_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1400", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "validate_brand_qty_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1444", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1451", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1451"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "persist_plan_product_brand_qtys", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1452", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "callee": "create_dept_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1460"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1475", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1475"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1484", "receiver": "product_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1486", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "validate_brand_qty_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1498", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1505", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1505"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "persist_plan_product_brand_qtys", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1506", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "callee": "create_dept_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1514"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1537", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1539", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1539", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1539"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1548", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "sync_draft_settlement_freight_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1553", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1563", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1565", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1568", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1568", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1568"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1577", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1586", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1586"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1601", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1601", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "sum_delivery_outbound_qty", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1610", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1616", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "callee": "sync_draft_settlement_freight_for_transport", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1622", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1642", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "callee": "PlPlanChange", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1643", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1644", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1666", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1669", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1672", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1672", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "PlTransport", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1672"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1681", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1688", "receiver": "b"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "persist_transport_product_feedback", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1693", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1703", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1703"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1707", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1709", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1710", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1725", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1728", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1728", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "PlTransportSiteLink", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1728"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1738", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1742", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1745", "receiver": "json"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1746", "receiver": "datetime"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_all_hazard_products_cert_complete", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_brand_qtys_only", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_freight", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_archive_product_quantities", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_payload_to_transport_row", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_driver_feedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_plan_site_feedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_prefill_to_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_apply_vehicle_snapshot_to_plan_transport", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_assert_contract_selectable_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_build_plan_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_freight_amount", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_calc_plan_total_amount", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_cert_url_blank", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_draft_transport_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_clear_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_collect_hazard_product_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_create_transport_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_determine_plan_type", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_estimate_qty_fields", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_fetch_hazard_flags_map", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_generate_transport_no", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_hazard_product_cert_complete", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_is_ton_product_unit", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_load_plan_contracts_grouped", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_maybe_auto_set_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_normalize_contract_links", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_product_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_hazard_products", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_has_incomplete_hazard_cert_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_plan_product_actual_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_create_actual_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_product_quantity", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_record_plan_change", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_replace_plan_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_required_hazard_cert_fields", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_driver", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_hazard_flags_from_crm", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_resolve_transport_context", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_hazard_cert_ready", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_set_plan_erp_entered", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_plan_product_actual_quantities", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sum_product_actual_quantities", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_archive_qty_from_io_order", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_sync_transport_prefill_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_transport_has_locked_freight_settlement", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_update_plan_product_certs", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_upsert_draft_transport_for_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_create_full", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_hazard_cert_ready_for_transport", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_service_validate_plan_party_contracts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/92002b545d4cb3b8066bd6f5e28fbe2245d771df3451fdd3358c92726413ac10.json b/backend/graphify-out/cache/ast/v0.9.4/92002b545d4cb3b8066bd6f5e28fbe2245d771df3451fdd3358c92726413ac10.json new file mode 100644 index 000000000..131b33f42 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/92002b545d4cb3b8066bd6f5e28fbe2245d771df3451fdd3358c92726413ac10.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "label": "test_pl_plan_archive_export.py", "file_type": "code", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "label": "test_resolve_archive_list_io_column()", "file_type": "code", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L12"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "label": "test_append_stop_product_rows_io_and_amount()", "file_type": "code", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L20"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "label": "test_append_stop_product_rows_delivery_external_outbound()", "file_type": "code", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L68"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_fakeplan", "label": "_FakePlan", "file_type": "code", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L103"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_plan_common_export_fields", "label": "test_plan_common_export_fields()", "file_type": "code", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L116"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "app_services_pl_plan_archive_export", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_fakeplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L103", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_plan_common_export_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L116", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_plan_common_export_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_fakeplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_archive_export.py", "source_location": "L117", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L13"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "callee": "resolve_archive_list_io_column", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L14", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "callee": "resolve_archive_list_io_column", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L15", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "callee": "resolve_archive_list_io_column", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L16", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column", "callee": "resolve_archive_list_io_column", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L17", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "INTERNAL_CUSTOMER_NAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L21"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "PlanStopProductRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L22", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L32", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L33", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L34", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "PlanLoadRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L39", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "_append_stop_product_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L61", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L62", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L64", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L65", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "PlanStopProductRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L69", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L76", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L77", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L78", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "PlanDeliveryRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L82", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "_append_stop_product_rows", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L95", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L98", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L100", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_plan_common_export_fields", "callee": "_plan_common_export_fields", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_archive_export.py", "source_location": "L117", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_fakeplan", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_delivery_external_outbound", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_append_stop_product_rows_io_and_amount", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_plan_common_export_fields", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_archive_export_test_resolve_archive_list_io_column"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/92b2880ac79c787ba9d4afdbc1efde5c860b638ded4585ba66d03c316323c7a0.json b/backend/graphify-out/cache/ast/v0.9.4/92b2880ac79c787ba9d4afdbc1efde5c860b638ded4585ba66d03c316323c7a0.json new file mode 100644 index 000000000..6844445b2 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/92b2880ac79c787ba9d4afdbc1efde5c860b638ded4585ba66d03c316323c7a0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "label": "pl_brand_archive.py", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "label": "_is_plan_level_row()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L12"}, {"id": "plplanproductbrandqty", "label": "PlPlanProductBrandQty", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "label": "_row_to_brand_dict()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "label": "_parse_unit_price()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L27"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "label": "load_brand_qtys_by_plan_product_ids()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L38"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "label": "load_brand_qtys_by_stop_product_ids()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L71"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "label": "validate_brand_qty_rows()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L103"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "label": "persist_plan_product_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L121"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "label": "persist_stop_product_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_brand_archive.py", "source_location": "L177"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_44", "label": "\u6309\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6 ID \u6279\u91cf\u52a0\u8f7d\u8ba1\u5212\u7ea7\u5f52\u6863\u54c1\u724c\u6570\u91cf\uff08brandId/brandName/qty/unitPrice\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L44"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_77", "label": "\u6309\u88c5\u8d27/\u9001\u8d27\u6bb5\u4ea7\u54c1\u884c ID \u6279\u91cf\u52a0\u8f7d\u6bb5\u7ea7\u5f52\u6863\u54c1\u724c\u6570\u91cf\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L77"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_132", "label": "\u8f6f\u5220\u8ba1\u5212\u7ea7\u65e7\u54c1\u724c\u91cf\u884c\u540e\u6309\u5f52\u6863\u7ed3\u679c\u63d2\u5165\uff1b\u65e0\u54c1\u724c\u7ea6\u5b9a\u5219\u53ea\u8f6f\u5220\u4e0d\u63d2\u5165\u3002\u4e0d\u89e6\u78b0\u6bb5\u7ea7\u884c\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L132"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_190", "label": "\u8f6f\u5220\u8be5\u6bb5\u4ea7\u54c1\u884c\u65e7\u54c1\u724c\u91cf\u540e\u5199\u5165\uff1b\u65e0\u6709\u6548\u6570\u91cf\u5219\u53ea\u8f6f\u5220\u3002", "file_type": "rationale", "source_file": "app/services/pl_brand_archive.py", "source_location": "L190"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "target": "plplanproductbrandqty", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "target": "plplanproductbrandqty", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L103", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L103", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L121", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L177", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L110", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L152", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "plplanproductbrandqty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L158", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L207", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "plplanproductbrandqty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L218", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L228", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_44", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_77", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_132", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_rationale_190", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_brand_archive.py", "source_location": "L190", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L13", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "callee": "stop_product_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L13"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L28", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L30", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L32", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L49", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L49", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L49"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L51", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L54", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L55", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L67", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L67", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L82", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L82", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L82"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L84", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L88", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L99", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L99", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L114", "receiver": "r"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L116", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L118", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L134", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L134"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L152", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L155", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L155", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L156", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L156", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L157", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L159", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L191", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L195", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "PlPlanProductBrandQty", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L195"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L207", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L212", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L215", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L215", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L216", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L216", "receiver": "item"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L217", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_brand_archive.py", "source_location": "L219", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_is_plan_level_row", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_plan_product_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_load_brand_qtys_by_stop_product_ids", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_parse_unit_price", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_plan_product_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_persist_stop_product_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_row_to_brand_dict", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_brand_archive_validate_brand_qty_rows"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/98ae03861aa904d298e91d656b261b9aa88161e4abfe6bee2a1ea49e6458a36b.json b/backend/graphify-out/cache/ast/v0.9.4/98ae03861aa904d298e91d656b261b9aa88161e4abfe6bee2a1ea49e6458a36b.json new file mode 100644 index 000000000..0deb85a3b --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/98ae03861aa904d298e91d656b261b9aa88161e4abfe6bee2a1ea49e6458a36b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "label": "pl_models.py", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "label": "PlCarrier", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L28"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L57"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "label": "PlPersonnel", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L84"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "label": "PlTransportAddress", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L119"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "label": "PlCustomerStopPref", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L143"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "label": "PlCert", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L168"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "label": "PlDriver", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L194"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "label": "PlVehiclePersonnel", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L220"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "label": "PlVehicleDriver", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L241"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "label": "PlPlan", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L266"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "label": "PlPlanContract", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L375"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L398"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "label": "PlPlanProductBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L457"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "label": "PlPlanChange", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L484"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "label": "PlPlanLoad", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L506"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "label": "PlPlanLoadProduct", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L534"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "label": "PlPlanDelivery", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L565"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "label": "PlPlanDeliveryProduct", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L594"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "label": "PlTransport", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L630"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "label": "PlTransportProductFeedback", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L693"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "label": "PlTransportProductBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L714"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "label": "PlTransportDbLink", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L737"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "label": "PlPlanTransport", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L762"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "label": "PlTransportDriverStopFeedback", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L781"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "label": "PlTransportSiteStopFeedback", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L809"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "label": "PlTransportSiteLink", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L839"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "label": "PlInboundOrder", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L872"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "label": "PlInboundOrderItem", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L902"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "label": "PlInboundOrderItemBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L928"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "label": "PlOutboundOrder", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L951"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "label": "PlOutboundOrderItem", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L981"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "label": "PlOutboundOrderItemBrandQty", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1007"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "label": "PlTransportApproval", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1030"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1059"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "label": "PlFreightSettlementApproval", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1091"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "label": "PlFreightSettlementTransport", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1118"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "label": "PlRemittanceVoucher", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1138"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "label": "PlInventory", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1165"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "label": "PlInventoryTransaction", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1199"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "label": "PlInventoryWarning", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1230"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "label": "PlDocumentReminder", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1257"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "label": "PlVehicleRechargeApply", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1285"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "label": "PlVehicleMaintenanceApply", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1310"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "label": "PlVehicleMaintenanceProcess", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1338"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "label": "PlVehicleUreaApply", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1362"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "label": "PlVehicleUreaDisburse", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1389"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "label": "PlOcrUsageMonth", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1413"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "label": "PlVehicleRechargeRecord", "file_type": "code", "source_file": "app/models/pl_models.py", "source_location": "L1432"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_120", "label": "\u8fd0\u8f93\u901a\u7528\u5730\u5740\u5e93 pl_transport_address", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L120"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_144", "label": "\u5ba2\u6237\u88c5/\u9001\u8d27\u7269\u6d41\u9ed8\u8ba4\u8bb0\u5fc6 pl_customer_stop_pref", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L144"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_195", "label": "\u53f8\u673a\u8868 pl_driver\uff08\u517c\u5bb9\u65e7\u8868\uff0c\u8fc1\u79fb\u540e\u9010\u6b65\u5e9f\u5f03\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L195"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_221", "label": "\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u8868 pl_vehicle_personnel", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L221"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_242", "label": "\u8f66\u8f86-\u53f8\u673a\u5173\u8054\u8868 pl_vehicle_driver\uff08\u517c\u5bb9\u65e7\u8868\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L242"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_376", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5408\u540c\u5173\u8054\uff08\u5206\u4fa7\u591a\u9009\uff09 pl_plan_contract", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L376"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_399", "label": "\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6\u8868 pl_plan_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L399"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_458", "label": "\u8ba1\u5212\u4ea7\u54c1\u5f52\u6863\u54c1\u724c\u6570\u91cf pl_plan_product_brand_qty stop_product_id \u4e3a\u7a7a\uff1a\u8ba1\u5212\u4ea7\u54c1\u7ea7\u6c47\u603b\uff1b\u975e\u7a7a\uff1a\u88c5\u8d27/\u9001\u8d27\u6bb5\u4ea7\u54c1", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L458"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_485", "label": "\u8ba1\u5212\u53d8\u66f4\u8bb0\u5f55\u8868 pl_plan_change", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L485"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_507", "label": "\u8fd0\u8f93\u8ba1\u5212-\u88c5\u8d27\u6bb5 pl_plan_load\uff08plan 1:1\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L507"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_535", "label": "\u8fd0\u8f93\u8ba1\u5212-\u88c5\u8d27\u6bb5\u4ea7\u54c1\u660e\u7ec6 pl_plan_load_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L535"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_566", "label": "\u8fd0\u8f93\u8ba1\u5212-\u9001\u8d27\u6bb5 pl_plan_delivery\uff08plan 1:N\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L566"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_595", "label": "\u8fd0\u8f93\u8ba1\u5212-\u9001\u8d27\u6bb5\u4ea7\u54c1\u660e\u7ec6 pl_plan_delivery_product", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L595"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_694", "label": "\u8fd0\u8f93\u5355\u6309\u4ea7\u54c1\u56de\u4f20 pl_transport_product_feedback", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L694"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_715", "label": "\u8fd0\u8f93\u5355\u4ea7\u54c1\u56de\u4f20\u54c1\u724c\u6570\u91cf pl_transport_product_brand_qty", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L715"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_738", "label": "\u8fd0\u8f93-\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054 pl_transport_db_link", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L738"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_763", "label": "\u8ba1\u5212-\u8fd0\u8f93\u5173\u8054\u8868 pl_plan_transport", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L763"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_782", "label": "\u8fd0\u8f93\u5355-\u53f8\u673a\u6309\u6bb5\u9644\u4ef6\u56de\u4f20 pl_transport_driver_stop_feedback", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L782"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_810", "label": "\u8fd0\u8f93\u5355-\u73b0\u573a\u6309\u6bb5\u56de\u4f20 pl_transport_site_stop_feedback", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L810"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_840", "label": "\u8fd0\u8f93\u8ba1\u5212\u73b0\u573a\u94fe\u63a5 pl_transport_site_link\uff08\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5355\u89e3\u8026\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L840"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_873", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355 pl_inbound_order", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L873"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_903", "label": "\u8fd0\u8f93\u8ba1\u5212-\u5165\u5e93\u5355\u660e\u7ec6 pl_inbound_order_item", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L903"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_929", "label": "\u5165\u5e93\u660e\u7ec6\u54c1\u724c\u6570\u91cf pl_inbound_order_item_brand_qty", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L929"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_952", "label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355 pl_outbound_order", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L952"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_982", "label": "\u8fd0\u8f93\u8ba1\u5212-\u51fa\u5e93\u5355\u660e\u7ec6 pl_outbound_order_item", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L982"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1008", "label": "\u51fa\u5e93\u660e\u7ec6\u54c1\u724c\u6570\u91cf pl_outbound_order_item_brand_qty", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1008"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1031", "label": "\u8fd0\u8f93\u5ba1\u6279\u8bb0\u5f55\u8868 pl_transport_approval", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1031"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1060", "label": "\u8fd0\u8d39\u7ed3\u7b97\u8868 pl_freight_settlement", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1060"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1092", "label": "\u8fd0\u8d39\u7ed3\u7b97\u5ba1\u6279 pl_freight_settlement_approval", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1092"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1119", "label": "\u7ed3\u7b97\u5355-\u8fd0\u8f93\u5173\u8054\u8868 pl_freight_settlement_transport", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1119"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1139", "label": "\u6c47\u6b3e\u51ed\u8bc1\u8868 pl_remittance_voucher", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1200", "label": "\u5e93\u5b58\u6d41\u6c34\u8868 pl_inventory_transaction", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1200"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1231", "label": "\u5e93\u5b58\u9884\u8b66\u8868 pl_inventory_warning", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1231"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1258", "label": "\u8bc1\u4ef6\u5230\u671f\u63d0\u9192\u8868 pl_document_reminder", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1258"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1286", "label": "\u8f66\u8f86ETC/\u52a0\u6cb9\u5145\u503c\u7533\u8bf7 pl_vehicle_recharge_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1286"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1311", "label": "\u8f66\u8f86\u7ef4\u4fdd\u7533\u8bf7 pl_vehicle_maintenance_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1311"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1339", "label": "\u8f66\u8f86\u7ef4\u4fdd\u5904\u7406\u767b\u8bb0 pl_vehicle_maintenance_process", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1339"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1363", "label": "\u8f66\u8f86\u5c3f\u7d20\u7533\u8bf7 pl_vehicle_urea_apply", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1363"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1390", "label": "\u8f66\u8f86\u5c3f\u7d20\u53d1\u653e\u767b\u8bb0 pl_vehicle_urea_disburse", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1390"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1414", "label": "\u963f\u91cc\u4e91 OCR \u6708\u5ea6\u8c03\u7528\u8ba1\u6570 pl_ocr_usage_month\uff08\u6309\u81ea\u7136\u6708\u5168\u5c40\u7edf\u8ba1\uff09", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1414"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1433", "label": "\u8f66\u8f86ETC/\u52a0\u6cb9\u5145\u503c\u53d1\u653e\u767b\u8bb0 pl_vehicle_recharge_record", "file_type": "rationale", "source_file": "app/models/pl_models.py", "source_location": "L1433"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L57", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L241", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L375", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L398", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L398", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L457", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L457", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L506", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L506", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L534", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L534", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L565", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L565", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L594", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L594", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L630", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L630", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L693", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L693", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L714", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L714", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L737", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L737", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L762", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L762", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L781", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L781", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L809", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L809", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L839", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L839", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L872", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L872", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L902", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L902", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L928", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L928", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L951", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L981", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L981", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1007", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1007", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1030", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1030", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1059", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1059", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1091", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1091", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1118", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1118", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1138", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1165", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1165", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1199", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1199", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1257", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1362", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1362", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1389", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1389", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1413", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1432", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1432", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_120", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_144", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L144", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_195", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L195", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_221", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L221", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_242", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L242", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_376", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L376", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_399", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L399", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_458", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L458", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_485", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L485", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_507", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L507", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_535", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L535", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_566", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L566", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_595", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L595", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_694", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L694", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_715", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L715", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_738", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L738", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_763", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L763", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_782", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L782", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_810", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L810", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_840", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L840", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_873", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L873", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_903", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L903", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_929", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L929", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_952", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L952", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_982", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L982", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1008", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1008", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1031", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1031", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1060", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1060", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1092", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1092", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1119", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1119", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1139", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1200", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1200", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1231", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1231", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1258", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1258", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1286", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1286", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1311", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1339", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1339", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1363", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1390", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1390", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1414", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1414", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_rationale_1433", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/models/pl_models.py", "source_location": "L1433", "weight": 1.0}], "raw_calls": [], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcarrier", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcert", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plcustomerstoppref", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldocumentreminder", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pldriver", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlement", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementapproval", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plfreightsettlementtransport", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorder", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinboundorderitembrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventory", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorytransaction", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plinventorywarning", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plocrusagemonth", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorder", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_ploutboundorderitembrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plpersonnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplan", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanchange", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplancontract", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandelivery", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplandeliveryproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanload", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanloadproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproduct", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplanproductbrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plplantransport", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plremittancevoucher", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransport", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportaddress", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportapproval", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdblink", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportdriverstopfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductbrandqty", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportproductfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitelink", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_pltransportsitestopfeedback", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicle", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicledriver", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceapply", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclemaintenanceprocess", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclepersonnel", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargeapply", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehiclerechargerecord", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureaapply", "users_wuzilong_work_00code_shanxia2_0_backend_app_models_pl_models_plvehicleureadisburse"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/9937436d348f5abec0d833954f63822a61169189cc4b21da225a33f6ec0d1287.json b/backend/graphify-out/cache/ast/v0.9.4/9937436d348f5abec0d833954f63822a61169189cc4b21da225a33f6ec0d1287.json new file mode 100644 index 000000000..1ddd95b2d --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/9937436d348f5abec0d833954f63822a61169189cc4b21da225a33f6ec0d1287.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_stop_contract_gap", "label": "stop_contract_gap()", "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_side_is_exempt", "label": "side_is_exempt()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L51"}, {"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": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "label": "compute_plan_gap_sides_from_stops()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L70"}, {"id": "planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py"}, {"id": "plandeliveryread", "label": "PlanDeliveryRead", "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_stop_contract_exists", "label": "_stop_contract_exists()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L104"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "label": "_load_stop_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L121"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "label": "_delivery_stop_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L144"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "label": "_legacy_supplier_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L167"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "label": "_legacy_demander_gap_expr()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L193"}, {"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": "L219"}, {"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": "L229"}, {"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": "L233"}, {"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": "L237"}, {"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": "L276"}, {"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": "L311"}, {"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_write_stop_contract_rows", "label": "_write_stop_contract_rows()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L446"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "label": "_clear_legacy_side_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L490"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "label": "update_plan_stop_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L511"}, {"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": "L620"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_79", "label": "\u6309\u6bb5\u6b21\u6c47\u603b\u8ba1\u5212\u662f\u5426\u4ecd\u6709\u5408\u540c\u7f3a\u53e3\uff08supplier=\u88c5\u8d27\u4fa7\uff0cdemander=\u9001\u8d27\u4fa7\uff09\u3002", "file_type": "rationale", "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_rationale_220", "label": "\u5217\u8868\u7b5b\u9009\uff1a\u4efb\u4e00\u6bb5\u6b21\uff08\u6216\u65e7\u8ba1\u5212\u7ea7\uff09\u5b58\u5728\u5408\u540c\u7f3a\u53e3\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L220"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_630", "label": "\u5355\u4fa7\u4fdd\u5b58\u8ba1\u5212\u5408\u540c\u5173\u8054\uff08\u65e7\u8ba1\u5212\u7ea7\u63a5\u53e3\uff0c\u517c\u5bb9\u4fdd\u7559\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L630"}], "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_core_utils", "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_models_pl_models", "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_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L18", "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": "L25", "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": "L26", "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": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_plan_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_py", "target": "app_services_pl_product_display", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L40", "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": "L43", "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_stop_contract_gap", "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_side_is_exempt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L51", "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": "L55", "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_plan_gap_sides_from_stops", "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_compute_plan_gap_sides_from_stops", "target": "planloadread", "relation": "references", "context": "generic_arg", "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_compute_plan_gap_sides_from_stops", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "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_stop_contract_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L104", "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_stop_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L121", "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_delivery_stop_gap_expr", "relation": "contains", "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_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L167", "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_legacy_demander_gap_expr", "relation": "contains", "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_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": "L219", "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": "L229", "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": "L233", "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": "L237", "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": "L237", "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": "L237", "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": "L237", "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": "L237", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L237", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_build_plan_contract_gap_read", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L237", "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": "L237", "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": "L276", "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": "L276", "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": "L276", "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": "L311", "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": "L311", "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": "L311", "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": "L311", "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": "L311", "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_write_stop_contract_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L446", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L446", "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_clear_legacy_side_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L490", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L490", "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_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plancontractgapread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L511", "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": "L620", "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": "L620", "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": "L620", "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": "L620", "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": "L620", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_contract_gap_sides", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "relation": "calls", "context": "call", "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_load_stop_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L134", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L157", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L184", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L210", "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_load_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L222", "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_delivery_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L223", "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_legacy_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L224", "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_legacy_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L225", "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_load_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L230", "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_legacy_supplier_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L230", "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_delivery_stop_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L234", "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_legacy_demander_gap_expr", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L234", "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_plan_gap_sides_from_stops", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L247", "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": "L255", "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": "L266", "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": "L331", "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": "L340", "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": "L342", "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": "L426", "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": "L434", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L578", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L585", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_contract_gap.py", "source_location": "L592", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L606", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L610", "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": "L654", "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": "L675", "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": "L679", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_79", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "relation": "rationale_for", "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_rationale_220", "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": "L220", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_rationale_630", "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": "L630", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "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": "L48", "receiver": null}, {"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": "L52", "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": "L64", "receiver": "gaps"}, {"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": "L66", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L98", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_compute_plan_gap_sides_from_stops", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L100", "receiver": "gaps"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_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": "L105", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_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": "L106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_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": "L106", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_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": "L110", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "callee": "and_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L112", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_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": "L113", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L113", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L114", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L122"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L123", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L124", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_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": "L126", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "callee": "where", "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_stop_gap_expr", "callee": "select", "is_member_call": false, "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_stop_gap_expr", "callee": "PLAN_CONTRACT_SIDE_LOAD", "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": "L138"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_stop_gap_expr", "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": "L138"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L145"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L146", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L147", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_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": "L149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L151", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L152", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "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": "L161"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "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": "L161"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L168"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "callee": "where", "is_member_call": true, "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_legacy_supplier_gap_expr", "callee": "select", "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_legacy_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": "L176", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L177", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L179", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L181", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_gap_expr", "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": "L188"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L194"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L195", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L196", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L196", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L202", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L203", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_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": "L207", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_demander_gap_expr", "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": "L214"}, {"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": "L221", "receiver": null}, {"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": "L230", "receiver": null}, {"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": "L234", "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": "L285", "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": "L285", "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": "L285"}, {"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": "L287", "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": "L290", "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": "L290", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L293", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L293", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "load_crm_product_alias_maps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L294", "receiver": null}, {"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": "L299", "receiver": "PlanProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_load_products_by_plan_ids", "callee": "resolve_product_display_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L300", "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": "L307", "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": "L307", "receiver": "out"}, {"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": "L327", "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": "L327"}, {"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": "L333", "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": "L333"}, {"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": "L336", "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": "L338", "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": "L338", "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": "L345", "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": "L349", "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": "L351", "receiver": "kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L352", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L353", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L353", "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": "L357", "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": "L357", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L360", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L361", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L361", "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": "L365", "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": "L365", "receiver": "func"}, {"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": "L369", "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": "L370", "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": "L370", "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": "L371", "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": "L371", "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": "L384", "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": "L386", "receiver": "q_kw"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L387", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L388", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L388", "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": "L392", "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": "L392", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "exists", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L395", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "where", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L396", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "select", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L396", "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": "L400", "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": "L400", "receiver": "func"}, {"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": "L404", "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": "L405", "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": "L406", "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": "L406", "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": "L407", "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": "L407", "receiver": "func"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L414", "receiver": null}, {"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": "L416", "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": "L416", "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": "L416", "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": "L417", "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": "L422", "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": "L422", "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": "L425", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_list_plan_contract_gaps", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L427", "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": "L431", "receiver": "contracts_by_plan"}, {"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": "L432", "receiver": "stops_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": "L433", "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": "L438", "receiver": "products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L457", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L458", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L458", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "PlPlanContract", "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": "L458"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L470", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "PlPlanContract", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L471", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L472", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L498", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L499", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L499", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "PlPlanContract", "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": "L499"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "or_", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L503", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "is_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L503", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_clear_legacy_side_contracts", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L504", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L524", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "lower", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L526", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L526", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L527", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L533", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L533", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PlPlanLoad", "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": "L533"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L542"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L543"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L547", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L547", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PlPlanDelivery", "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": "L547"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L556"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L557"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L561", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "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": "L563", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L564", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L566", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L570", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L577", "receiver": "resolved"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L603", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L603", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_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": "L607", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L607", "receiver": null}, {"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": "L632", "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": "L633"}, {"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": "L633"}, {"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": "L634", "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": "L636", "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": "L636", "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": "L639", "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": "L646", "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": "L653", "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": "L662", "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": "L672", "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": "L672", "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": "L675", "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": "L676", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_side_contracts", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_contract_gap.py", "source_location": "L676", "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_clear_legacy_side_contracts", "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_compute_plan_gap_sides_from_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_delivery_stop_gap_expr", "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_legacy_demander_gap_expr", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_legacy_supplier_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_load_stop_gap_expr", "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_is_exempt", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_exists", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_stop_contract_gap", "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", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_update_plan_stop_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_contract_gap_write_stop_contract_rows"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/9fe01b4364e7f645da09a8d1248409684a9b42eafcce466913e92e0eb432216f.json b/backend/graphify-out/cache/ast/v0.9.4/9fe01b4364e7f645da09a8d1248409684a9b42eafcce466913e92e0eb432216f.json new file mode 100644 index 000000000..8a31c3d53 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/9fe01b4364e7f645da09a8d1248409684a9b42eafcce466913e92e0eb432216f.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_planstopproductbody", "label": "PlanStopProductBody", "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_planstopproductread", "label": "PlanStopProductRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L123"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "label": "PlanLoadBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L142"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "label": "PlanDeliveryBody", "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_planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L181"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "label": "PlanDeliveryRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L192"}, {"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": "L208"}, {"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": "L259"}, {"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": "L266"}, {"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": "L283"}, {"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": "L297"}, {"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": "L349"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "label": "ErpEnteredBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L354"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "label": "PlanDocumentAttachmentItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L359"}, {"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": "L365"}, {"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": "L400"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryprintcustomeroption", "label": "DeliveryPrintCustomerOption", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L442"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "label": "DeliverySlipPrintRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L449"}, {"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": "L462"}, {"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": "L467"}, {"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": "L474"}, {"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": "L486"}, {"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": "L497"}, {"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": "L508"}, {"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": "L533"}, {"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": "L541"}, {"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": "L546"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "label": "PlanArchiveStopProductItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L557"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "label": "PlanArchiveLoadBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L569"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivedeliveryblock", "label": "PlanArchiveDeliveryBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L575"}, {"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": "L581"}, {"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": "L593"}, {"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": "L601"}, {"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": "L608"}, {"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": "L617"}, {"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": "L630"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "label": "PlanForceFollowStatusBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L635"}, {"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": "L646"}, {"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": "L651"}, {"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": "L670"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_rationale_636", "label": "\u8fd0\u7ef4\u7ea0\u9519\uff1a\u5f3a\u5236\u6539\u8ddf\u8fdb\u72b6\u6001\uff08\u4ec5\u6539\u5b57\u6bb5\uff0c\u4e0d\u8054\u52a8\u4e1a\u52a1\uff09\u3002", "file_type": "rationale", "source_file": "app/schemas/pl/plan.py", "source_location": "L636"}], "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_planstopproductbody", "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_planstopproductbody", "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_planstopproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductbody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L123", "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_planloadbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L142", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L142", "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_plandeliverybody", "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_plandeliverybody", "target": "basemodel", "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_planloadread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L181", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadbody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L181", "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_plandeliveryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverybody", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L192", "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": "L208", "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": "L208", "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": "L259", "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": "L259", "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": "L266", "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": "L266", "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": "L283", "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": "L283", "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": "L297", "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": "L297", "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": "L349", "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": "L349", "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_erpenteredbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L354", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L354", "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_plandocumentattachmentitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L359", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L359", "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": "L365", "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": "L365", "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": "L365", "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": "L400", "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": "L400", "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_deliveryprintcustomeroption", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L442", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryprintcustomeroption", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L442", "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_deliveryslipprintread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L449", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L449", "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": "L462", "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": "L462", "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": "L467", "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": "L467", "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": "L474", "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": "L474", "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": "L486", "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": "L486", "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": "L497", "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": "L497", "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": "L508", "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": "L508", "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": "L533", "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": "L533", "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": "L541", "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": "L541", "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": "L546", "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": "L546", "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_planarchivestopproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L557", "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_planarchiveloadblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L569", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L569", "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_planarchivedeliveryblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L575", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivedeliveryblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L575", "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": "L581", "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": "L581", "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": "L593", "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": "L593", "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": "L601", "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": "L601", "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": "L608", "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": "L608", "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": "L617", "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": "L617", "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": "L630", "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": "L630", "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_planforcefollowstatusbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L635", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L635", "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": "L646", "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": "L646", "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": "L651", "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": "L651", "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": "L670", "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": "L670", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_rationale_636", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planforcefollowstatusbody", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/schemas/pl/plan.py", "source_location": "L636", "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_deliveryprintcustomeroption", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_deliveryslipprintread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_erpenteredbody", "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_planarchivedeliveryblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivefreightblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveloadblock", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchiveproductitem", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivestopproductitem", "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_plandeliverybody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliveryread", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandocumentattachmentitem", "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_planforcefollowstatusbody", "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_planloadbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planloadread", "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_planstopproductbody", "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planstopproductread", "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/b8a05bf4a63f483898f9c9c1d6c641b9f5aeef88371a863409d214d6e2d57999.json b/backend/graphify-out/cache/ast/v0.9.4/b8a05bf4a63f483898f9c9c1d6c641b9f5aeef88371a863409d214d6e2d57999.json new file mode 100644 index 000000000..481dd6055 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/b8a05bf4a63f483898f9c9c1d6c641b9f5aeef88371a863409d214d6e2d57999.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "label": "pl_plan_stop_service.py", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "label": "_contract_link()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L46"}, {"id": "plplancontract", "label": "PlPlanContract", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.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_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "label": "_attach_stop_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L54"}, {"id": "planstopproductread", "label": "PlanStopProductRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_list_product_name", "label": "_resolve_stop_list_product_name()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L66"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "label": "_apply_stop_list_product_name()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "label": "_load_stop_product()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L98"}, {"id": "plplanloadproduct", "label": "PlPlanLoadProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "label": "_delivery_stop_product()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L117"}, {"id": "plplandeliveryproduct", "label": "PlPlanDeliveryProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "label": "load_stop_contract_rows_grouped()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L136"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "label": "_contracts_for_stop()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L159"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "label": "_to_decimal()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L174"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "label": "resolve_stop_address_from_library()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L183"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "label": "enrich_stop_addresses_from_library()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L224"}, {"id": "planloadbody", "label": "PlanLoadBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "plandeliverybody", "label": "PlanDeliveryBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "label": "load_plan_stops_grouped()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L243"}, {"id": "planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "plandeliveryread", "label": "PlanDeliveryRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "label": "resolve_load_customer_name()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L405"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "label": "resolve_delivery_customer_summary()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L415"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "label": "attach_plan_stops_to_item()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L436"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "label": "uses_multi_stop_payload()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L452"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "label": "_normalize_contract_links()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L456"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "label": "_resolve_stop_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L470"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "label": "validate_plan_stops_write()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "label": "collect_stop_qty_warnings()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L544"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "label": "sync_plan_legacy_from_stops()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L557"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "label": "_soft_delete_plan_stops()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L584"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "label": "_write_stop_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L639"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "label": "_resolve_plan_product_id()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L675"}, {"id": "planstopproductbody", "label": "PlanStopProductBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "label": "_resolve_or_create_plan_load()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L700"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "label": "replace_plan_stops()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L768"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u88c5\u8d27/\u9001\u8d27\u6bb5\u8bfb\u53d6\u4e0e\u5217\u8868\u6458\u8981\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_73", "label": "\u5217\u8868\u5c55\u793a\u7528\uff1a\u4f18\u5148 CRM \u6807\u51c6\u540d\uff0c\u4e0d\u5c55\u793a\u522b\u540d\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L73"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_190", "label": "\u6bb5 address \u4e3a\u7a7a\u65f6\uff0c\u6309\u7ecf\u7eac\u5ea6\u4ece\u8fd0\u8f93\u5730\u5740\u5e93\u8865\u5168 full_address\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L190"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_248", "label": "\u6279\u91cf\u8bfb\u53d6\u88c5\u8d27\u6bb5\u4e0e\u9001\u8d27\u6bb5\uff08\u5217\u8868/\u8be6\u60c5\u5171\u7528\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L248"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_709", "label": "\u88c5\u8d27\u6bb5\u4e0e plan 1:1\uff1buk_pl_plan_load_plan \u4ec5\u6309 plan_id \u552f\u4e00\uff0c\u8f6f\u5220\u540e\u4e0d\u53ef\u518d INSERT\uff0c\u987b\u539f\u5730\u66f4\u65b0\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L709"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_plan_stop_rules", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_product_display", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "target": "plplancontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "target": "plancontractlink", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_list_product_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L66", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L83", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "plplanloadproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "plplandeliveryproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L117", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "target": "plplancontract", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L136", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "target": "plplancontract", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L159", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L174", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L183", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L183", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L224", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L224", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L224", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L224", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L243", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L243", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L243", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L243", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L405", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L415", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L415", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L415", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L436", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L452", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "target": "planloadbody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L452", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L452", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L456", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L456", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L456", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L470", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "planloadbody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "planloadbody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L501", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L544", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L544", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L544", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L584", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L584", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L639", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L639", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L639", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L675", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "target": "planstopproductbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L675", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L700", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L768", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L47", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_list_product_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L107", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L126", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L164", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L178", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L194", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L329", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L338", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L348", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L356", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L376", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L445", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L480", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L493", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L517", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L540", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "target": "plplancontract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L655", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L778", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L781", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L794", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "plplanloadproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L796", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L822", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "plplandeliveryproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L869", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_73", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_list_product_name", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L73", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_190", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L190", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_248", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L248", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_709", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L709", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L58", "receiver": "brand_qtys_by_stop"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L60", "receiver": "PlanArchiveBrandQtyItem"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_list_product_name", "callee": "resolve_product_display_names", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L74", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L105", "receiver": "PlanStopProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L124", "receiver": "PlanStopProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L144", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L144", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "PlPlanContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L144"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L147", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L150", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L153", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L153"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L155", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L170", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L191", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L199", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "PlTransportAddress", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L199"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L208", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L208", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L212", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L217", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L220", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L253", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L253"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L256", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L264", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L264"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L267", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L267", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L267"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L273", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L273", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L276", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L279", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L279", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L279"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L282", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L285", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L285", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L288", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L288"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L291", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L292", "receiver": "delivery_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L294", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L294"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L297", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L297", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L297"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L300", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L303", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L303", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L306", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L310", "receiver": "load_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L313", "receiver": "stop_product_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L314", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L315", "receiver": "crm_product_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L315", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L316", "receiver": "delivery_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L319", "receiver": "stop_product_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L320", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L321", "receiver": "crm_product_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L321", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "load_brand_qtys_by_stop_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L322", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "load_crm_product_alias_maps", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L325", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L333", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L334", "receiver": "load_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L337", "receiver": "PlanLoadRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L354", "receiver": "load_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L359"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "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_stop_service.py", "source_location": "L359"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L363", "receiver": "deliveries_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L365", "receiver": "PlanDeliveryRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L382", "receiver": "delivery_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L384"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "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_stop_service.py", "source_location": "L384"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L396"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L398", "receiver": "delivery_reads"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L409", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L410", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L411", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L422", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L424", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L425", "receiver": "names"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L429", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L432", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L446", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L448", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L462", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L465", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L466", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L478", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "callee": "assert_contract_selectable_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L485", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L492", "receiver": "resolved"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L509", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L510", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L510", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L511", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L513", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L515", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L528", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L528", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L538", "receiver": "resolved_deliveries"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L553", "receiver": "delivery_rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "callee": "warn_qty_imbalance", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L554", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L590", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L593", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L593"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L602", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L602", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L602"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L603", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L609", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L609"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L618", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L618", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L618"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L623", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L623", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L623"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L629", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L629", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L629"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L633", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L634"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L634"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L650", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L654", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L656", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L679", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L684", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L687", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L689", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L692", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L694", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "resolve_stop_dibang_defaults", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L710", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L712", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L715", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L715", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L715", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L715"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L720", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L720", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L740", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L741", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "PlPlanLoad", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L742", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L779", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L795", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L797", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L827"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "resolve_stop_dibang_defaults", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L835", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L837", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L839", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L840", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "PlPlanDelivery", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L841", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L868", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L870", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L899"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_apply_stop_list_product_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_list_product_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/c5fa5dcaa2a36bbd59437c5080a64d3de72c829c0b43277fe1c4df272c66b1a8.json b/backend/graphify-out/cache/ast/v0.9.4/c5fa5dcaa2a36bbd59437c5080a64d3de72c829c0b43277fe1c4df272c66b1a8.json new file mode 100644 index 000000000..45d36ee14 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/c5fa5dcaa2a36bbd59437c5080a64d3de72c829c0b43277fe1c4df272c66b1a8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "label": "pl_plan_stop_service.py", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "label": "_contract_link()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L45"}, {"id": "plplancontract", "label": "PlPlanContract", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.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_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "label": "_attach_stop_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L53"}, {"id": "planstopproductread", "label": "PlanStopProductRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "label": "_load_stop_product()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L65"}, {"id": "plplanloadproduct", "label": "PlPlanLoadProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "label": "_delivery_stop_product()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L75"}, {"id": "plplandeliveryproduct", "label": "PlPlanDeliveryProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "label": "load_stop_contract_rows_grouped()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L85"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "label": "_contracts_for_stop()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L108"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "label": "_to_decimal()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L123"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "label": "resolve_stop_address_from_library()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L132"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "label": "enrich_stop_addresses_from_library()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L173"}, {"id": "planloadbody", "label": "PlanLoadBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "plandeliverybody", "label": "PlanDeliveryBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "label": "load_plan_stops_grouped()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L192"}, {"id": "planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "plandeliveryread", "label": "PlanDeliveryRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "label": "resolve_load_customer_name()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L332"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "label": "resolve_delivery_customer_summary()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L342"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "label": "attach_plan_stops_to_item()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L363"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "label": "uses_multi_stop_payload()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L379"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "label": "_normalize_contract_links()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L383"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "label": "_resolve_stop_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L397"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "label": "validate_plan_stops_write()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "label": "collect_stop_qty_warnings()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L471"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "label": "sync_plan_legacy_from_stops()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L484"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "label": "_soft_delete_plan_stops()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L511"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "label": "_write_stop_contracts()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L566"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "label": "_resolve_plan_product_id()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L602"}, {"id": "planstopproductbody", "label": "PlanStopProductBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "label": "_resolve_or_create_plan_load()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L627"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "label": "replace_plan_stops()", "file_type": "code", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L695"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u88c5\u8d27/\u9001\u8d27\u6bb5\u8bfb\u53d6\u4e0e\u5217\u8868\u6458\u8981\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_139", "label": "\u6bb5 address \u4e3a\u7a7a\u65f6\uff0c\u6309\u7ecf\u7eac\u5ea6\u4ece\u8fd0\u8f93\u5730\u5740\u5e93\u8865\u5168 full_address\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L139"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_197", "label": "\u6279\u91cf\u8bfb\u53d6\u88c5\u8d27\u6bb5\u4e0e\u9001\u8d27\u6bb5\uff08\u5217\u8868/\u8be6\u60c5\u5171\u7528\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L197"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_636", "label": "\u88c5\u8d27\u6bb5\u4e0e plan 1:1\uff1buk_pl_plan_load_plan \u4ec5\u6309 plan_id \u552f\u4e00\uff0c\u8f6f\u5220\u540e\u4e0d\u53ef\u518d INSERT\uff0c\u987b\u539f\u5730\u66f4\u65b0\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L636"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L33", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_plan_stop_rules", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "target": "plplancontract", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "target": "plancontractlink", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L53", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "plplanloadproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "plplandeliveryproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "planstopproductread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "target": "plplancontract", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L85", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "target": "plplancontract", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L108", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L123", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L173", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L192", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L332", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L332", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L332", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L342", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L363", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "target": "planloadbody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L379", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L383", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L397", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "planloadbody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "planloadbody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L428", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L471", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L471", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L471", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L484", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L511", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L566", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L566", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "target": "plancontractlink", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L566", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L602", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "target": "planstopproductbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L602", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L627", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "planloadbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "plandeliverybody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L695", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L113", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L127", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L143", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L179", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L266", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L275", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L285", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L288", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L371", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L372", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L407", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "target": "plancontractlink", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L420", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L444", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L467", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "target": "plplancontract", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L582", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L705", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L708", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L721", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "plplanloadproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L723", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L749", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "target": "plplandeliveryproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L796", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_139", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L139", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_197", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L197", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_rationale_636", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_stop_service.py", "source_location": "L636", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L57", "receiver": "brand_qtys_by_stop"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L59", "receiver": "PlanArchiveBrandQtyItem"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L69", "receiver": "PlanStopProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L79", "receiver": "PlanStopProductRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L93", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L93", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "PlPlanContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L93"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L96", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L99", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L99", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L102", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L102"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L119", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L140", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L148", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "PlTransportAddress", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L148"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L157", "receiver": "query"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L157", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L161", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L169", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L202", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L202"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L205", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L213", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L213"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L216", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L216", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L216"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L219", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L222", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L222", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L225", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L228", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L228", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L228"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L231", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L234", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L237", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L237"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L240", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L241", "receiver": "delivery_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L243", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L243"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L246", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L246", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L246"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L249", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L252", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L252", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L255", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L258", "receiver": "load_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L259", "receiver": "stop_product_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "values", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L260", "receiver": "delivery_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L261", "receiver": "stop_product_ids"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "load_brand_qtys_by_stop_product_ids", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L262", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L270", "receiver": "contracts_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L271", "receiver": "load_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L274", "receiver": "PlanLoadRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L286", "receiver": "load_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L291"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "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_stop_service.py", "source_location": "L291"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L295", "receiver": "deliveries_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L297", "receiver": "PlanDeliveryRead"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L309", "receiver": "delivery_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L311"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "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_stop_service.py", "source_location": "L311"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L323"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L325", "receiver": "delivery_reads"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L336", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L337", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L338", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L349", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L351", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L352", "receiver": "names"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L356", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L359", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L373", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L375", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L389", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L392", "receiver": "seen"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L393", "receiver": "out"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L405", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "callee": "assert_contract_selectable_for_plan", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L412", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L419", "receiver": "resolved"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L436", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L437", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L437", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L438", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L440", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L442", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L455", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L455", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L456", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L465", "receiver": "resolved_deliveries"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "callee": "extend", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L480", "receiver": "delivery_rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "callee": "warn_qty_imbalance", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L481", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L517", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L520", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L520"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L529", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L529", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L529"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L530", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L536", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L536"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L545", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L545", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L545"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L546", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L550", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L550", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L550"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L556", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L556", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PlPlanContract", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L556"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L560", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L561"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L561"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L577", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L581", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L583", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L606", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L611", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L614", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L616", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L619", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L621", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "resolve_stop_dibang_defaults", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L637", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L639", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L642", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L642", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L642", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L642"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L647", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "desc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L647", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L667", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L668", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "callee": "PlPlanLoad", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L669", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "now", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L706", "receiver": "datetime"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L722", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L724", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "PLAN_CONTRACT_SIDE_LOAD", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L754"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "resolve_stop_dibang_defaults", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L762", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L764", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L766", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L767", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "PlPlanDelivery", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L768", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "add", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L795", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L797", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "callee": "PLAN_CONTRACT_SIDE_DELIVERY", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_stop_service.py", "source_location": "L826"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_plan_stops_to_item", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_attach_stop_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_collect_stop_qty_warnings", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contract_link", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_contracts_for_stop", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_delivery_stop_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_enrich_stop_addresses_from_library", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_plan_stops_grouped", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_contract_rows_grouped", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_load_stop_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_normalize_contract_links", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_replace_plan_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_delivery_customer_summary", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_load_customer_name", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_or_create_plan_load", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_plan_product_id", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_address_from_library", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_resolve_stop_contracts", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_soft_delete_plan_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_sync_plan_legacy_from_stops", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_to_decimal", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_uses_multi_stop_payload", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_validate_plan_stops_write", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_stop_service_write_stop_contracts"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/daf3f1b60dbd013f02e2e0aa4643cb1cb630e22188e163e186df310b100a378a.json b/backend/graphify-out/cache/ast/v0.9.4/daf3f1b60dbd013f02e2e0aa4643cb1cb630e22188e163e186df310b100a378a.json new file mode 100644 index 000000000..2e9707559 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/daf3f1b60dbd013f02e2e0aa4643cb1cb630e22188e163e186df310b100a378a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "label": "pl_plan_archive_export.py", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "label": "resolve_archive_list_io_column()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L44"}, {"id": "stopkind", "label": "StopKind", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "label": "_format_date_value()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L52"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_plate_display", "label": "_format_plate_display()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L58"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "label": "_get_stop_archive_actual_qty()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L68"}, {"id": "planstopproductread", "label": "PlanStopProductRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "label": "_get_stop_archive_unit_price()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L72"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "label": "_get_stop_archive_amount()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L76"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_kind_label", "label": "_stop_kind_label()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L87"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "label": "_stop_time()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L93"}, {"id": "planloadread", "label": "PlanLoadRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "plandeliveryread", "label": "PlanDeliveryRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "label": "_load_legacy_products_by_plan()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L99"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "label": "_plan_common_export_fields()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L120"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_empty_product_fields", "label": "_empty_product_fields()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L146"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "label": "_product_row_from_stop_product()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "label": "_append_stop_product_rows()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L186"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "label": "_append_legacy_plan_product_rows()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L217"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "label": "build_plan_archive_export_rows()", "file_type": "code", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L259"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u5f52\u6863\u5bfc\u51fa\uff1a\u6309\u88c5\u8d27/\u9001\u8d27\u6bb5 \u00d7 \u6bb5\u5185\u4ea7\u54c1\u5c55\u5f00\uff0c\u4e0e\u5217\u8868\u5c55\u793a\u89c4\u5219\u4e00\u81f4\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_45", "label": "\u88c5\u8d27/\u9001\u8d27\u6bb5\u5165\u5e93\u51fa\u5e93\u5217\u65b9\u5411\uff08\u4e0e\u524d\u7aef resolveArchiveListIoColumn \u4e00\u81f4\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L45"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_224", "label": "\u65e0\u6bb5\u8868\u6570\u636e\u65f6\u56de\u9000\u8ba1\u5212\u4ea7\u54c1\u7ea7\u5bfc\u51fa\uff08\u517c\u5bb9\u65e7\u6570\u636e\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L224"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_265", "label": "\u6784\u5efa\u5f52\u6863\u5bfc\u51fa\u6570\u636e\u884c\uff1a\u6bcf\u8ba1\u5212 \u00d7 \u6bcf\u6bb5\u6b21 \u00d7 \u6bcf\u6bb5\u4ea7\u54c1\u4e00\u884c\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L265"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "app_services_pl_plan_stop_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L52", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_plate_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_kind_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L87", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_kind_label", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L87", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L93", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L99", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_empty_product_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "target": "planstopproductread", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L161", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "stopkind", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "planloadread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "plandeliveryread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "planstopproductread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L186", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L217", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L217", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L217", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "plplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L259", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L95", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L130", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_plate_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L137", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L166", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L167", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L168", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L169", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_kind_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L198", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L201", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_empty_product_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L209", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L212", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L230", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_empty_product_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L238", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L271", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L277", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L282", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L292", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_45", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L45", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_224", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L224", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_rationale_265", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_export.py", "source_location": "L265", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L46", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_plate_display", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L59", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_plate_display", "callee": "strip", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L60", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "callee": "load_time", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L95"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time", "callee": "delivery_time", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L96"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L105", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L105", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L105"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L116", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L116", "receiver": "grouped"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L125", "receiver": "FREIGHT_TYPE_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L134", "receiver": "ARCHIVE_STATUS_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L135", "receiver": "FOLLOW_STATUS_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L136", "receiver": "PLAN_TYPE_LABELS"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L212", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L213", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "callee": "update", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L241", "receiver": "row"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "callee": "append", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L255", "receiver": "rows"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "callee": "load_plan_stops_grouped", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L270", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L276", "receiver": "transports_by_id"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L278", "receiver": "stops_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L287", "receiver": "legacy_products_by_plan"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_py", "callee": "str", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_export.py", "source_location": "L15"}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_legacy_plan_product_rows", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_append_stop_product_rows", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_build_plan_archive_export_rows", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_empty_product_fields", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_date_value", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_format_plate_display", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_actual_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_amount", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_get_stop_archive_unit_price", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_load_legacy_products_by_plan", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_plan_common_export_fields", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_product_row_from_stop_product", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_resolve_archive_list_io_column", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_kind_label", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_export_stop_time"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/dd1ad81c08c1a6fc6e651955c412e5f679fb124b4820051c6438d9ef7b654cca.json b/backend/graphify-out/cache/ast/v0.9.4/dd1ad81c08c1a6fc6e651955c412e5f679fb124b4820051c6438d9ef7b654cca.json new file mode 100644 index 000000000..efd2ac480 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/dd1ad81c08c1a6fc6e651955c412e5f679fb124b4820051c6438d9ef7b654cca.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "label": "pl_plan_archive_stop_service.py", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "label": "_require_qty()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "label": "_apply_stop_product_archive()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37"}, {"id": "plplanloadproduct", "label": "PlPlanLoadProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "plplandeliveryproduct", "label": "PlPlanDeliveryProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "planarchivestopproductitem", "label": "PlanArchiveStopProductItem", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "label": "_brand_rows_from_item()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L64"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "label": "_persist_stop_brand_qtys()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "label": "apply_archive_stop_quantities()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L111"}, {"id": "planarchiveloadblock", "label": "PlanArchiveLoadBlock", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "planarchivedeliveryblock", "label": "PlanArchiveDeliveryBlock", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "label": "sync_plan_products_from_stop_archive()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L213"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "label": "sum_delivery_outbound_qty()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L292"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "label": "iter_stop_archive_inventory_lines()", "file_type": "code", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L308"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_rationale_220", "label": "\u5c06\u6bb5\u7ea7\u5f52\u6863\u6570\u91cf\u6c47\u603b\u56de\u5199 pl_plan_product\uff08_row_to_dict \u6743\u5a01\u6765\u6e90\uff09\u3002", "file_type": "rationale", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L220"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_services_pl_brand_archive", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "app_services_pl_internal_customer", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "plplanloadproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "plplandeliveryproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "planarchivestopproductitem", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "target": "planarchivestopproductitem", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L64", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "plplanloadproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "plplandeliveryproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "planarchivestopproductitem", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "planarchiveloadblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "planarchivedeliveryblock", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L111", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L213", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L213", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L292", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L292", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L292", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L308", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L46", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L150", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L153", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L229", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L336", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_rationale_220", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_archive_stop_service.py", "source_location": "L220", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L30", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L33", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L88", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L88", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L88"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "persist_stop_product_brand_qtys", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L97", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "callee": "create_dept_id", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L107"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L121", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L121", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L121"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L131", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L135", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L135"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L143", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L145", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L147", "receiver": "load_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L149", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "order_by", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L164", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L164", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L164"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L170", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "asc", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L170", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L175", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L178", "receiver": "delivery_map"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L180", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L183", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L183"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L191", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L193", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L196", "receiver": "delivery_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L198", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L223", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L223"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L229", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L230", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L231", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "defaultdict", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L232", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L235", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L235", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L235"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L245", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L245"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L262", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L262"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "items", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L277", "receiver": "plan_products"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L286", "receiver": "outbound_by_plan_product"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L295", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L295"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "first", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L316", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L316", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanLoad", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L316"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L324", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L326", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanLoadProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L326"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L341", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanDelivery", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L341"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "is_internal_customer_name", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L351", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "query", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L356", "receiver": "db"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "PlPlanDeliveryProduct", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L356"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "callee": "in_", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_archive_stop_service.py", "source_location": "L358", "receiver": null}], "callable_nids": ["users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_archive_stop_quantities", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_apply_stop_product_archive", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_brand_rows_from_item", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_iter_stop_archive_inventory_lines", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_persist_stop_brand_qtys", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_require_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sum_delivery_outbound_qty", "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_archive_stop_service_sync_plan_products_from_stop_archive"]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/v0.9.4/f3f2129118a9776f02a6ae97fa85cbce2639dd7aa7a803920b347486385e49d7.json b/backend/graphify-out/cache/ast/v0.9.4/f3f2129118a9776f02a6ae97fa85cbce2639dd7aa7a803920b347486385e49d7.json new file mode 100644 index 000000000..fb8d52df6 --- /dev/null +++ b/backend/graphify-out/cache/ast/v0.9.4/f3f2129118a9776f02a6ae97fa85cbce2639dd7aa7a803920b347486385e49d7.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": "L15"}, {"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": "L25"}, {"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": "L35"}, {"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": "L45"}, {"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": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_stop_contract_gap_internal_exempt", "label": "test_stop_contract_gap_internal_exempt()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L65"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "label": "test_compute_plan_gap_sides_from_stops_multi_delivery()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L71"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_internal_load_no_gap", "label": "test_compute_plan_gap_sides_from_stops_internal_load_no_gap()", "file_type": "code", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L108"}, {"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": "L133"}, {"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": "L139"}], "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_schemas_pl_plan", "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_internal_customer", "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": "app_services_pl_plan_contract_gap", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L5", "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": "L15", "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": "L25", "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": "L35", "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": "L45", "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": "L55", "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_stop_contract_gap_internal_exempt", "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_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L71", "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_compute_plan_gap_sides_from_stops_internal_load_no_gap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pl_plan_contract_gap.py", "source_location": "L108", "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": "L133", "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": "L139", "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": "L141", "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": "L16", "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": "L26", "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": "L27"}, {"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": "L36", "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": "L37"}, {"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": "L38"}, {"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": "L46", "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": "L56", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_stop_contract_gap_internal_exempt", "callee": "stop_contract_gap", "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}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_stop_contract_gap_internal_exempt", "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": "L66"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_stop_contract_gap_internal_exempt", "callee": "stop_contract_gap", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L67", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_stop_contract_gap_internal_exempt", "callee": "stop_contract_gap", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L68", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "callee": "PlanLoadRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L72", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "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": "L76"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "callee": "PlanDeliveryRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L82", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "callee": "PlanDeliveryRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L93", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "callee": "compute_plan_gap_sides_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L104", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_internal_load_no_gap", "callee": "PlanLoadRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L109", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_internal_load_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": "L113"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_internal_load_no_gap", "callee": "PlanDeliveryRead", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L119", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_internal_load_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": "L124"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_internal_load_no_gap", "callee": "compute_plan_gap_sides_from_stops", "is_member_call": false, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/tests/test_pl_plan_contract_gap.py", "source_location": "L130", "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": "L134", "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": "L135", "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": "L135", "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": "L140", "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_compute_plan_gap_sides_from_stops_internal_load_no_gap", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_compute_plan_gap_sides_from_stops_multi_delivery", "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", "users_wuzilong_work_00code_shanxia2_0_backend_tests_test_pl_plan_contract_gap_test_stop_contract_gap_internal_exempt"]} \ No newline at end of file diff --git a/backend/tests/test_pl_plan_archive_export.py b/backend/tests/test_pl_plan_archive_export.py new file mode 100644 index 000000000..e3a184703 --- /dev/null +++ b/backend/tests/test_pl_plan_archive_export.py @@ -0,0 +1,123 @@ +from decimal import Decimal + +from app.schemas.pl.plan import PlanDeliveryRead, PlanLoadRead, PlanStopProductRead +from app.services.pl_internal_customer import INTERNAL_CUSTOMER_NAMES +from app.services.pl_plan_archive_export import ( + _append_stop_product_rows, + _plan_common_export_fields, + resolve_archive_list_io_column, +) + + +def test_resolve_archive_list_io_column(): + internal = next(iter(INTERNAL_CUSTOMER_NAMES)) + assert resolve_archive_list_io_column("load", internal) == "outbound" + assert resolve_archive_list_io_column("load", "外部客户") == "inbound" + assert resolve_archive_list_io_column("delivery", internal) == "inbound" + assert resolve_archive_list_io_column("delivery", "外部客户") == "outbound" + + +def test_append_stop_product_rows_io_and_amount(): + internal = next(iter(INTERNAL_CUSTOMER_NAMES)) + product = PlanStopProductRead( + id="sp1", + planId="p1", + tenantNo="t1", + productId="prod1", + productNo="P001", + productName="甲醇", + model="99%", + unit="吨", + packageSpec="散装", + planQty=Decimal("10"), + inboundQty=Decimal("9.5"), + inboundPrice=Decimal("100"), + inboundAmount=None, + createTime="2026-08-27T00:00:00", + updateTime="2026-08-27T00:00:00", + ) + load = PlanLoadRead( + id="load1", + planId="p1", + tenantNo="t1", + customerName=internal, + address="装货地址", + loadTime="2026-08-27T08:00:00", + products=[product], + createTime="2026-08-27T00:00:00", + updateTime="2026-08-27T00:00:00", + ) + rows: list[dict] = [] + plan_common = { + "planNo": "PL20260827001", + "planDate": "2026-08-27", + } + row_no = _append_stop_product_rows(rows, 0, plan_common, "load", load, None, load.products) + assert row_no == 1 + assert len(rows) == 1 + row = rows[0] + assert row["stopKind"] == "装货" + assert row["stopCustomer"] == internal + assert row["actualQty"] == Decimal("9.5") + assert row["outboundQty"] == Decimal("9.5") + assert row["inboundQty"] is None + assert row["unitPrice"] == Decimal("100") + assert row["amount"] == Decimal("950") + + +def test_append_stop_product_rows_delivery_external_outbound(): + product = PlanStopProductRead( + id="sp2", + planId="p1", + tenantNo="t1", + productId="prod1", + productNo="P001", + productName="甲醇", + outboundQty=Decimal("8"), + outboundPrice=Decimal("120"), + outboundAmount=Decimal("960"), + createTime="2026-08-27T00:00:00", + updateTime="2026-08-27T00:00:00", + ) + delivery = PlanDeliveryRead( + id="del1", + planId="p1", + tenantNo="t1", + seq=1, + customerName="外部客户", + address="送货地址", + deliveryTime="2026-08-28T10:00:00", + products=[product], + createTime="2026-08-27T00:00:00", + updateTime="2026-08-27T00:00:00", + ) + rows: list[dict] = [] + row_no = _append_stop_product_rows(rows, 0, {"planNo": "P1"}, "delivery", delivery, 1, delivery.products) + row = rows[0] + assert row["stopKind"] == "送货 #1" + assert row["outboundQty"] == Decimal("8") + assert row["inboundQty"] is None + assert row["amount"] == Decimal("960") + + +class _FakePlan: + plan_no = "PL001" + plan_date = "2026-08-27" + archive_status = "archived" + follow_status = "arranged" + plan_type = "direct" + license_plate = "皖A12345" + trailer_no = "挂001" + erp_entered = 1 + freight_amount = Decimal("500") + remark = "测试" + + +def test_plan_common_export_fields(): + fields = _plan_common_export_fields(_FakePlan(), None) + assert fields["planNo"] == "PL001" + assert fields["archiveStatus"] == "已归档" + assert fields["followStatus"] == "已安排" + assert fields["planType"] == "直销单" + assert fields["licensePlate"] == "皖A12345挂001" + assert fields["erpEntered"] == "是" diff --git a/docs/fresh-mint-pl-plan-contract-supplement-dialog-demo.html b/docs/fresh-mint-pl-plan-contract-supplement-dialog-demo.html new file mode 100644 index 000000000..bedd0b998 --- /dev/null +++ b/docs/fresh-mint-pl-plan-contract-supplement-dialog-demo.html @@ -0,0 +1,858 @@ + + + + + + Fresh Mint · 运输计划合同完善 · 补充弹窗 Demo + + + + + + +
+
+

运输计划合同完善 · 补充弹窗

+

+ 对齐当前线上列表(段次行合并):点击合同缺口旁的「补充」打开弹窗, + 仅针对本段客户关联已有 CRM 合同并保存。不再使用行内展开。 +

+
+ Fresh Mint · web-admin + 点击「补充」体验弹窗 + 路径 /#/pl/plan-module/plan-contract +
+
+ +

+ 交互变更:原「行内展开 + 保存本段合同」→ 改为「弹窗补充」。 + 弹窗内复用合同多选卡片(选择合同 / 查看 / 移除),底栏「取消 / 保存本段合同」。 + 未保存关闭时二次确认(Demo 用 confirm)。 +

+ +
+
+

运输计划合同完善

+ 待完善 3 条 +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ +
+
+ + + + +
+
+ + + + 待完善 3 条 +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
序号计划编号计划日期单据类型跟进状态段次客户地址 / 时间合同缺口产品名称
1 + + 2026-08-20汽运已安排装货合肥某某商贸有限公司 +
+ 合肥市经开区某某路 88 号 + 08:30 +
+
+
+
+ 装货 + 待补充 +
+ +
+
液碱 32%
2送货 + 安庆市山峡化工有限公司 + 内部 + +
+ 安庆市迎江区某某大道 + 14:00 +
+
+
+
+ 送货 + 内置可免 +
+
+
液碱 32%
3 + + 2026-08-19汽运待安排装货 + 安徽云栋化工有限公司 + 内部 + +
+ 安庆市大观区某某工业园 + 09:00 +
+
+
+
+ 装货 + 内置可免 +
+
+
盐酸
4送货芜湖某某材料有限公司 +
+ 芜湖市弋江区某某路 + 16:00 +
+
+
+
+ 送货 + 待补充 +
+ +
+
盐酸
5 + + 2026-08-18汽运运输中装货马鞍山某某化工有限公司 +
+ 马鞍山市雨山区某某路 + 07:30 +
+
+
+
+ 装货 + 待补充 +
+ +
+
片碱
+
+
共 3 条 · 每页 20 条 · 1 / 1
+
+ +
+
+

弹窗行为

+
    +
  • 标题:补充合同 · 装货/送货 + 计划编号
  • +
  • 摘要:计划日期、跟进状态、本段客户、地址时间
  • +
  • 主体:复用合同多选卡片(选择 / 查看 / 移除)
  • +
  • 保存:仅提交本段合同;成功后刷新列表与角标
  • +
+
+
+

与现网差异

+
    +
  • ❌ 去掉表格 type="expand" 行内展开区
  • +
  • ✅ 「补充」改为打开弹窗(本 Demo)
  • +
  • ✅ 内置客户行仍不展示「补充」入口
  • +
  • ✅ 不在此页新建 / 编辑合同
  • +
+
+
+
+ + + + + + + +
本段合同已保存(Demo)
+ + + + diff --git a/docs/sql/migrations/2026-08-27-pl-stop-product-brand-qty.sql b/docs/sql/migrations/2026-08-27-pl-stop-product-brand-qty.sql new file mode 100644 index 000000000..b7e12d55d --- /dev/null +++ b/docs/sql/migrations/2026-08-27-pl-stop-product-brand-qty.sql @@ -0,0 +1,9 @@ +-- 段级归档品牌数量:扩展 pl_plan_product_brand_qty +-- stop_product_id 为空 = 计划产品级汇总;非空 = 装货/送货段产品行上的填写值 +-- unit_price = 该品牌单价(金额 = qty * unit_price,展示时计算) + +ALTER TABLE `pl_plan_product_brand_qty` + ADD COLUMN `stop_type` varchar(20) DEFAULT NULL COMMENT 'load/delivery,空=计划级汇总' AFTER `plan_product_id`, + ADD COLUMN `stop_product_id` varchar(64) DEFAULT NULL COMMENT '段产品行ID,空=计划级汇总' AFTER `stop_type`, + ADD COLUMN `unit_price` decimal(15,4) DEFAULT NULL COMMENT '本品牌归档单价' AFTER `qty`, + ADD KEY `idx_stop_product` (`stop_product_id`) USING BTREE; diff --git a/web-admin/src/components/business/pl-plan-archive-brand-view-block/index.vue b/web-admin/src/components/business/pl-plan-archive-brand-view-block/index.vue new file mode 100644 index 000000000..ba7fe157d --- /dev/null +++ b/web-admin/src/components/business/pl-plan-archive-brand-view-block/index.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-archive-segment-block/index.vue b/web-admin/src/components/business/pl-plan-archive-segment-block/index.vue new file mode 100644 index 000000000..a83df7382 --- /dev/null +++ b/web-admin/src/components/business/pl-plan-archive-segment-block/index.vue @@ -0,0 +1,392 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-contract-cell/index.vue b/web-admin/src/components/business/pl-plan-contract-cell/index.vue new file mode 100644 index 000000000..4956bc06e --- /dev/null +++ b/web-admin/src/components/business/pl-plan-contract-cell/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/web-admin/src/composables/useContractDetailDialog.ts b/web-admin/src/composables/useContractDetailDialog.ts new file mode 100644 index 000000000..b0be65337 --- /dev/null +++ b/web-admin/src/composables/useContractDetailDialog.ts @@ -0,0 +1,47 @@ +import { defineAsyncComponent, nextTick, ref, watch } from 'vue' + +export const ContractDetailDialogAsync = defineAsyncComponent( + () => import('@/views/crm/contract/components/ContractDetailDialog.vue') +) + +type ContractDetailDialogExpose = { + open: (id: string | number) => Promise +} + +export function useContractDetailDialog() { + const contractDetailRef = ref() + + async function waitForContractDetailDialog() { + if (contractDetailRef.value) return contractDetailRef.value + await nextTick() + if (contractDetailRef.value) return contractDetailRef.value + return new Promise((resolve) => { + const stop = watch( + contractDetailRef, + (val) => { + if (val) { + stop() + resolve(val) + } + }, + { flush: 'post' } + ) + }) + } + + async function openContractDetail(contractId: string | number | undefined | null) { + const id = String(contractId ?? '').trim() + if (!id) { + ElMessage.warning('暂无关联合同') + return + } + const dialog = await waitForContractDetailDialog() + await dialog.open(id) + } + + return { + ContractDetailDialog: ContractDetailDialogAsync, + contractDetailRef, + openContractDetail + } +} diff --git a/web-admin/src/composables/useDecimalInput.ts b/web-admin/src/composables/useDecimalInput.ts new file mode 100644 index 000000000..763037f11 --- /dev/null +++ b/web-admin/src/composables/useDecimalInput.ts @@ -0,0 +1,81 @@ +import { ref, watch, type Ref } from 'vue' + +/** 是否为可提交的完整非负小数(空字符串视为清空) */ +export function isCompleteDecimalInput(raw: string): boolean { + const trimmed = raw.trim() + return trimmed === '' || /^\d+(\.\d+)?$/.test(trimmed) +} + +export function parseDecimalInput(raw: string, precision?: number): number | null { + const trimmed = raw.trim() + if (!trimmed) return null + if (!/^\d+(\.\d+)?$/.test(trimmed)) return null + const num = Number(trimmed) + if (!Number.isFinite(num) || num < 0) return null + if (precision == null) return num + return Number(num.toFixed(precision)) +} + +function formatDecimalDisplay(val: number, precision?: number): string { + if (precision == null) return String(val) + return Number(val.toFixed(precision)).toString() +} + +function sanitizeDecimalText(raw: string): string { + let text = raw.replace(/[^\d.]/g, '') + const dotIndex = text.indexOf('.') + if (dotIndex >= 0) { + text = text.slice(0, dotIndex + 1) + text.slice(dotIndex + 1).replace(/\./g, '') + } + return text +} + +/** + * 将 number | null 与 el-input 文本双向绑定; + * 仅在完整小数或清空时写入 source,避免打断输入,同时保证运费计算 watch 能触发。 + */ +export function useDecimalInputBinding( + source: Ref, + options?: { precision?: number; onCommit?: () => void } +) { + const text = ref('') + + watch( + source, + (val) => { + const next = + val == null || Number.isNaN(Number(val)) + ? '' + : formatDecimalDisplay(Number(val), options?.precision) + if (text.value !== next) text.value = next + }, + { immediate: true } + ) + + function commitFromText(raw: string, force = false) { + const sanitized = sanitizeDecimalText(raw) + text.value = sanitized + if (!force && !isCompleteDecimalInput(sanitized)) return + const parsed = parseDecimalInput(sanitized, options?.precision) + const prev = source.value + const changed = + parsed == null ? prev != null : prev == null || Math.abs(Number(prev) - parsed) > 1e-9 + source.value = parsed + if (parsed != null) { + text.value = formatDecimalDisplay(parsed, options?.precision) + } else if (force) { + text.value = '' + } + if (changed) options?.onCommit?.() + } + + function handleInput(val: string) { + commitFromText(val, false) + } + + function handleBlur() { + commitFromText(text.value, true) + } + + return { text, handleInput, handleBlur } +} diff --git a/web-admin/src/utils/pl-plan-archive-brand-view.ts b/web-admin/src/utils/pl-plan-archive-brand-view.ts new file mode 100644 index 000000000..7a6e5dd99 --- /dev/null +++ b/web-admin/src/utils/pl-plan-archive-brand-view.ts @@ -0,0 +1,211 @@ +import type { PlanFormProductRow } from '@/composables/usePlContractToPlan' +import type { PlanStopProductFormRow } from '@/utils/pl-plan-stop-form' + +export interface ArchiveBrandViewRow { + brandId: string + brandName: string + qty: number + price?: number + amount?: number +} + +export interface ArchiveBrandViewItem { + key: string + productName: string + unit?: string + planQty?: number + segmentQty: number + brandMode?: string + rows: ArchiveBrandViewRow[] +} + +function getSegmentQty( + row: PlanStopProductFormRow, + mode: 'inbound' | 'outbound', + planRow?: PlanFormProductRow +): number { + const primary = mode === 'inbound' ? row.inboundQty : row.outboundQty + if (primary != null && Number.isFinite(Number(primary))) return Number(primary) + const fallback = mode === 'inbound' ? planRow?.inboundQty : planRow?.outboundQty + if (fallback != null && Number.isFinite(Number(fallback))) return Number(fallback) + return 0 +} + +function getSegmentPrice( + row: PlanStopProductFormRow, + mode: 'inbound' | 'outbound', + planRow?: PlanFormProductRow +): number | undefined { + const primary = mode === 'inbound' ? row.inboundPrice : row.outboundPrice + if (primary != null && Number.isFinite(Number(primary))) return Number(primary) + const fallback = mode === 'inbound' ? planRow?.inboundPrice : planRow?.outboundPrice + if (fallback != null && Number.isFinite(Number(fallback))) return Number(fallback) + if (planRow?.taxPrice != null && Number.isFinite(Number(planRow.taxPrice))) { + return Number(planRow.taxPrice) + } + return undefined +} + +function getPlanBrandRows(planRow?: PlanFormProductRow) { + return (planRow?.brandQtyRows || []).filter((row) => Number(row.qty) > 0) +} + +function getStopBrandRows(stopRow: PlanStopProductFormRow) { + return (stopRow.brandQtys || []).filter((row) => Number(row.qty) > 0) +} + +function getAllocationMap( + allocations: Map>, + planProductId: string +): Map { + let map = allocations.get(planProductId) + if (!map) { + map = new Map() + allocations.set(planProductId, map) + } + return map +} + +/** 按段顺序贪心分配计划级品牌量(旧数据无段级品牌明细时回退) */ +function allocateBrandRows( + brandRows: Array<{ brandId: string; brandName: string; qty: number }>, + segmentQty: number, + price: number | undefined, + allocated: Map +): ArchiveBrandViewRow[] { + if (segmentQty <= 0 || !brandRows.length) return [] + let remaining = segmentQty + const result: ArchiveBrandViewRow[] = [] + for (const brand of brandRows) { + const total = Number(brand.qty || 0) + if (total <= 0) continue + const used = allocated.get(brand.brandId) || 0 + const available = total - used + if (available <= 0.0005) continue + const take = Math.min(available, remaining) + if (take <= 0.0005) continue + allocated.set(brand.brandId, used + take) + remaining -= take + result.push({ + brandId: brand.brandId, + brandName: brand.brandName, + qty: take, + price, + amount: price != null ? take * price : undefined + }) + if (remaining <= 0.0005) break + } + return result +} + +function buildRowsFromStopBrandQtys( + stopRow: PlanStopProductFormRow, + fallbackPrice: number | undefined +): ArchiveBrandViewRow[] { + return getStopBrandRows(stopRow).map((brand) => { + const qty = Number(brand.qty || 0) + const price = + brand.unitPrice != null && Number.isFinite(Number(brand.unitPrice)) + ? Number(brand.unitPrice) + : fallbackPrice + return { + brandId: String(brand.brandId || ''), + brandName: String(brand.brandName || ''), + qty, + price, + amount: price != null ? qty * price : undefined + } + }) +} + +export function buildArchiveBrandViewItems( + stopProducts: PlanStopProductFormRow[], + planProducts: PlanFormProductRow[], + mode: 'inbound' | 'outbound', + allocations: Map> +): ArchiveBrandViewItem[] { + const planById = new Map(planProducts.filter((row) => row.id).map((row) => [String(row.id), row])) + const planByProductId = new Map(planProducts.map((row) => [String(row.productId), row])) + const items: ArchiveBrandViewItem[] = [] + + for (const stopRow of stopProducts) { + const planRow = + (stopRow.planProductId ? planById.get(String(stopRow.planProductId)) : undefined) || + planByProductId.get(String(stopRow.productId)) + const brandMode = stopRow.brandMode || planRow?.brandMode + if (brandMode !== 'any' && brandMode !== 'required') continue + + const planProductId = String(stopRow.planProductId || planRow?.id || '').trim() + if (!planProductId) continue + + const segmentQty = getSegmentQty(stopRow, mode, planRow) + if (segmentQty <= 0) continue + const price = getSegmentPrice(stopRow, mode, planRow) + + // 优先使用段级归档时填写的品牌数量 + let rows = buildRowsFromStopBrandQtys(stopRow, price) + if (!rows.length) { + const brandRows = getPlanBrandRows(planRow) + if (!brandRows.length) continue + const allocated = getAllocationMap(allocations, planProductId) + rows = allocateBrandRows(brandRows, segmentQty, price, allocated) + } + if (!rows.length) continue + + items.push({ + key: `${planProductId}-${stopRow.id || stopRow.productId}`, + productName: + stopRow.standardProductName || + stopRow.productName || + planRow?.standardProductName || + planRow?.productName || + '—', + unit: stopRow.unit || planRow?.unit, + planQty: stopRow.planQty ?? planRow?.quantity, + segmentQty, + brandMode, + rows + }) + } + return items +} + +export function buildArchiveBrandViewsBySegment(input: { + loadProducts: PlanStopProductFormRow[] + deliveries: Array<{ key: string; products: PlanStopProductFormRow[] }> + planProducts: PlanFormProductRow[] +}): Map { + const result = new Map() + // 装货(入库)与送货(出库)各自独立分配池,互不占位(仅旧数据回退贪心时使用) + const inboundAllocations = new Map>() + const outboundAllocations = new Map>() + + result.set( + 'load', + buildArchiveBrandViewItems( + input.loadProducts, + input.planProducts, + 'inbound', + inboundAllocations + ) + ) + + for (const delivery of input.deliveries) { + result.set( + delivery.key, + buildArchiveBrandViewItems( + delivery.products, + input.planProducts, + 'outbound', + outboundAllocations + ) + ) + } + return result +} + +export function formatArchiveBrandAmount(qty?: number, price?: number): string { + if (qty == null || price == null) return '—' + const amount = Number(qty) * Number(price) + return Number.isFinite(amount) ? amount.toFixed(2) : '—' +}